From 881cf3de0bf41429b0f76d79af2ef00dd38e7686 Mon Sep 17 00:00:00 2001 From: Guinevere Saenger Date: Tue, 18 Jun 2024 16:55:29 -0700 Subject: [PATCH] Fix up note on `gcp.kms.CryptoKey` to show Pulumi resource option (#2095) Fixes #1879. --- provider/cmd/pulumi-resource-gcp/schema.json | 2 +- provider/doc_edits.go | 19 +++++++++++++++++++ sdk/dotnet/Kms/CryptoKey.cs | 4 +--- sdk/go/gcp/kms/cryptoKey.go | 4 +--- .../java/com/pulumi/gcp/kms/CryptoKey.java | 4 +--- sdk/nodejs/kms/cryptoKey.ts | 4 +--- sdk/python/pulumi_gcp/kms/crypto_key.py | 8 ++------ 7 files changed, 26 insertions(+), 19 deletions(-) diff --git a/provider/cmd/pulumi-resource-gcp/schema.json b/provider/cmd/pulumi-resource-gcp/schema.json index b6db763f4a..6a5e1989c4 100644 --- a/provider/cmd/pulumi-resource-gcp/schema.json +++ b/provider/cmd/pulumi-resource-gcp/schema.json @@ -205175,7 +205175,7 @@ } }, "gcp:kms/cryptoKey:CryptoKey": { - "description": "A `CryptoKey` represents a logical key that can be used for cryptographic operations.\n\n\n\u003e **Note:** CryptoKeys cannot be deleted from Google Cloud Platform.\nDestroying a provider-managed CryptoKey will remove it from state\nand delete all CryptoKeyVersions, rendering the key unusable, but *will\nnot delete the resource from the project.* When the provider destroys these keys,\nany data previously encrypted with these keys will be irrecoverable.\nFor this reason, it is strongly recommended that you add\nlifecycle\nhooks to the resource to prevent accidental destruction.\n\n\nTo get more information about CryptoKey, see:\n\n* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys)\n* How-to Guides\n * [Creating a key](https://cloud.google.com/kms/docs/creating-keys#create_a_key)\n\n## Example Usage\n\n### Kms Crypto Key Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"keyring-example\",\n location: \"global\",\n});\nconst example_key = new gcp.kms.CryptoKey(\"example-key\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"keyring-example\",\n location=\"global\")\nexample_key = gcp.kms.CryptoKey(\"example-key\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"keyring-example\",\n Location = \"global\",\n });\n\n var example_key = new Gcp.Kms.CryptoKey(\"example-key\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring-example\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKey(ctx, \"example-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\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"keyring-example\")\n .location(\"global\")\n .build());\n\n var example_key = new CryptoKey(\"example-key\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: keyring-example\n location: global\n example-key:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Kms Crypto Key Asymmetric Sign\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"keyring-example\",\n location: \"global\",\n});\nconst example_asymmetric_sign_key = new gcp.kms.CryptoKey(\"example-asymmetric-sign-key\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n purpose: \"ASYMMETRIC_SIGN\",\n versionTemplate: {\n algorithm: \"EC_SIGN_P384_SHA384\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"keyring-example\",\n location=\"global\")\nexample_asymmetric_sign_key = gcp.kms.CryptoKey(\"example-asymmetric-sign-key\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n purpose=\"ASYMMETRIC_SIGN\",\n version_template=gcp.kms.CryptoKeyVersionTemplateArgs(\n algorithm=\"EC_SIGN_P384_SHA384\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"keyring-example\",\n Location = \"global\",\n });\n\n var example_asymmetric_sign_key = new Gcp.Kms.CryptoKey(\"example-asymmetric-sign-key\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n Purpose = \"ASYMMETRIC_SIGN\",\n VersionTemplate = new Gcp.Kms.Inputs.CryptoKeyVersionTemplateArgs\n {\n Algorithm = \"EC_SIGN_P384_SHA384\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring-example\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKey(ctx, \"example-asymmetric-sign-key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key-example\"),\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(\"EC_SIGN_P384_SHA384\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"keyring-example\")\n .location(\"global\")\n .build());\n\n var example_asymmetric_sign_key = new CryptoKey(\"example-asymmetric-sign-key\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .purpose(\"ASYMMETRIC_SIGN\")\n .versionTemplate(CryptoKeyVersionTemplateArgs.builder()\n .algorithm(\"EC_SIGN_P384_SHA384\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: keyring-example\n location: global\n example-asymmetric-sign-key:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n purpose: ASYMMETRIC_SIGN\n versionTemplate:\n algorithm: EC_SIGN_P384_SHA384\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCryptoKey can be imported using any of these accepted formats:\n\n* `{{key_ring}}/cryptoKeys/{{name}}`\n\n* `{{key_ring}}/{{name}}`\n\nWhen using the `pulumi import` command, CryptoKey can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:kms/cryptoKey:CryptoKey default {{key_ring}}/cryptoKeys/{{name}}\n```\n\n```sh\n$ pulumi import gcp:kms/cryptoKey:CryptoKey default {{key_ring}}/{{name}}\n```\n\n", + "description": "A `CryptoKey` represents a logical key that can be used for cryptographic operations.\n\n\n\u003e **Note:** CryptoKeys cannot be deleted from Google Cloud Platform.\nDestroying a provider-managed CryptoKey will remove it from state\nand delete all CryptoKeyVersions, rendering the key unusable, but *will\nnot delete the resource from the project.* When the provider destroys these keys,\nany data previously encrypted with these keys will be irrecoverable.\nFor this reason, it is strongly recommended that you use Pulumi's [protect resource option](https://www.pulumi.com/docs/concepts/options/protect/).\n\n\nTo get more information about CryptoKey, see:\n\n* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys)\n* How-to Guides\n * [Creating a key](https://cloud.google.com/kms/docs/creating-keys#create_a_key)\n\n## Example Usage\n\n### Kms Crypto Key Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"keyring-example\",\n location: \"global\",\n});\nconst example_key = new gcp.kms.CryptoKey(\"example-key\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"keyring-example\",\n location=\"global\")\nexample_key = gcp.kms.CryptoKey(\"example-key\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"keyring-example\",\n Location = \"global\",\n });\n\n var example_key = new Gcp.Kms.CryptoKey(\"example-key\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring-example\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKey(ctx, \"example-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\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"keyring-example\")\n .location(\"global\")\n .build());\n\n var example_key = new CryptoKey(\"example-key\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: keyring-example\n location: global\n example-key:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Kms Crypto Key Asymmetric Sign\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"keyring-example\",\n location: \"global\",\n});\nconst example_asymmetric_sign_key = new gcp.kms.CryptoKey(\"example-asymmetric-sign-key\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n purpose: \"ASYMMETRIC_SIGN\",\n versionTemplate: {\n algorithm: \"EC_SIGN_P384_SHA384\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"keyring-example\",\n location=\"global\")\nexample_asymmetric_sign_key = gcp.kms.CryptoKey(\"example-asymmetric-sign-key\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n purpose=\"ASYMMETRIC_SIGN\",\n version_template=gcp.kms.CryptoKeyVersionTemplateArgs(\n algorithm=\"EC_SIGN_P384_SHA384\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"keyring-example\",\n Location = \"global\",\n });\n\n var example_asymmetric_sign_key = new Gcp.Kms.CryptoKey(\"example-asymmetric-sign-key\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n Purpose = \"ASYMMETRIC_SIGN\",\n VersionTemplate = new Gcp.Kms.Inputs.CryptoKeyVersionTemplateArgs\n {\n Algorithm = \"EC_SIGN_P384_SHA384\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring-example\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKey(ctx, \"example-asymmetric-sign-key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key-example\"),\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(\"EC_SIGN_P384_SHA384\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"keyring-example\")\n .location(\"global\")\n .build());\n\n var example_asymmetric_sign_key = new CryptoKey(\"example-asymmetric-sign-key\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .purpose(\"ASYMMETRIC_SIGN\")\n .versionTemplate(CryptoKeyVersionTemplateArgs.builder()\n .algorithm(\"EC_SIGN_P384_SHA384\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: keyring-example\n location: global\n example-asymmetric-sign-key:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n purpose: ASYMMETRIC_SIGN\n versionTemplate:\n algorithm: EC_SIGN_P384_SHA384\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCryptoKey can be imported using any of these accepted formats:\n\n* `{{key_ring}}/cryptoKeys/{{name}}`\n\n* `{{key_ring}}/{{name}}`\n\nWhen using the `pulumi import` command, CryptoKey can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:kms/cryptoKey:CryptoKey default {{key_ring}}/cryptoKeys/{{name}}\n```\n\n```sh\n$ pulumi import gcp:kms/cryptoKey:CryptoKey default {{key_ring}}/{{name}}\n```\n\n", "properties": { "cryptoKeyBackend": { "type": "string", diff --git a/provider/doc_edits.go b/provider/doc_edits.go index 79985ba805..c70637b5ea 100644 --- a/provider/doc_edits.go +++ b/provider/doc_edits.go @@ -1,6 +1,7 @@ package gcp import ( + "bytes" "fmt" "math/rand" "regexp" @@ -10,6 +11,7 @@ import ( func editRules(defaults []tfbridge.DocsEdit) []tfbridge.DocsEdit { return append(defaults, + fixUpKmsCryptoKey, fixupEffectiveLabels, removeSecretsInPlainTextNote, removeBetaFromDescriptionField, @@ -112,3 +114,20 @@ var rewritemembersField = tfbridge.DocsEdit{ return returnContent, nil }, } + +func targetedSimpleReplace(filePath, from, to string) tfbridge.DocsEdit { + fromB, toB := []byte(from), []byte(to) + return tfbridge.DocsEdit{ + Path: filePath, + Edit: func(_ string, content []byte) ([]byte, error) { + return bytes.ReplaceAll(content, fromB, toB), nil + }, + } +} + +var fixUpKmsCryptoKey = targetedSimpleReplace( + "kms_crypto_key.html.markdown", + "For this reason, it is strongly recommended that you add\nlifecycle\nhooks "+ + "to the resource to prevent accidental destruction.", + "For this reason, it is strongly recommended that you use "+ + "Pulumi's [protect resource option](https://www.pulumi.com/docs/concepts/options/protect/).") diff --git a/sdk/dotnet/Kms/CryptoKey.cs b/sdk/dotnet/Kms/CryptoKey.cs index 16c0847f8b..5b20c3bd02 100644 --- a/sdk/dotnet/Kms/CryptoKey.cs +++ b/sdk/dotnet/Kms/CryptoKey.cs @@ -17,9 +17,7 @@ namespace Pulumi.Gcp.Kms /// and delete all CryptoKeyVersions, rendering the key unusable, but *will /// not delete the resource from the project.* When the provider destroys these keys, /// any data previously encrypted with these keys will be irrecoverable. - /// For this reason, it is strongly recommended that you add - /// lifecycle - /// hooks to the resource to prevent accidental destruction. + /// For this reason, it is strongly recommended that you use Pulumi's [protect resource option](https://www.pulumi.com/docs/concepts/options/protect/). /// /// To get more information about CryptoKey, see: /// diff --git a/sdk/go/gcp/kms/cryptoKey.go b/sdk/go/gcp/kms/cryptoKey.go index e06d2d7dd0..357a724bee 100644 --- a/sdk/go/gcp/kms/cryptoKey.go +++ b/sdk/go/gcp/kms/cryptoKey.go @@ -19,9 +19,7 @@ import ( // and delete all CryptoKeyVersions, rendering the key unusable, but *will // not delete the resource from the project.* When the provider destroys these keys, // any data previously encrypted with these keys will be irrecoverable. -// For this reason, it is strongly recommended that you add -// lifecycle -// hooks to the resource to prevent accidental destruction. +// For this reason, it is strongly recommended that you use Pulumi's [protect resource option](https://www.pulumi.com/docs/concepts/options/protect/). // // To get more information about CryptoKey, see: // diff --git a/sdk/java/src/main/java/com/pulumi/gcp/kms/CryptoKey.java b/sdk/java/src/main/java/com/pulumi/gcp/kms/CryptoKey.java index 4ed0c522f1..1aff4af514 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/kms/CryptoKey.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/kms/CryptoKey.java @@ -27,9 +27,7 @@ * and delete all CryptoKeyVersions, rendering the key unusable, but *will * not delete the resource from the project.* When the provider destroys these keys, * any data previously encrypted with these keys will be irrecoverable. - * For this reason, it is strongly recommended that you add - * lifecycle - * hooks to the resource to prevent accidental destruction. + * For this reason, it is strongly recommended that you use Pulumi's [protect resource option](https://www.pulumi.com/docs/concepts/options/protect/). * * To get more information about CryptoKey, see: * diff --git a/sdk/nodejs/kms/cryptoKey.ts b/sdk/nodejs/kms/cryptoKey.ts index 60f2f11d95..7123df94fe 100644 --- a/sdk/nodejs/kms/cryptoKey.ts +++ b/sdk/nodejs/kms/cryptoKey.ts @@ -14,9 +14,7 @@ import * as utilities from "../utilities"; * and delete all CryptoKeyVersions, rendering the key unusable, but *will * not delete the resource from the project.* When the provider destroys these keys, * any data previously encrypted with these keys will be irrecoverable. - * For this reason, it is strongly recommended that you add - * lifecycle - * hooks to the resource to prevent accidental destruction. + * For this reason, it is strongly recommended that you use Pulumi's [protect resource option](https://www.pulumi.com/docs/concepts/options/protect/). * * To get more information about CryptoKey, see: * diff --git a/sdk/python/pulumi_gcp/kms/crypto_key.py b/sdk/python/pulumi_gcp/kms/crypto_key.py index e5ac358bd7..92e4ba2f20 100644 --- a/sdk/python/pulumi_gcp/kms/crypto_key.py +++ b/sdk/python/pulumi_gcp/kms/crypto_key.py @@ -498,9 +498,7 @@ def __init__(__self__, and delete all CryptoKeyVersions, rendering the key unusable, but *will not delete the resource from the project.* When the provider destroys these keys, any data previously encrypted with these keys will be irrecoverable. - For this reason, it is strongly recommended that you add - lifecycle - hooks to the resource to prevent accidental destruction. + For this reason, it is strongly recommended that you use Pulumi's [protect resource option](https://www.pulumi.com/docs/concepts/options/protect/). To get more information about CryptoKey, see: @@ -605,9 +603,7 @@ def __init__(__self__, and delete all CryptoKeyVersions, rendering the key unusable, but *will not delete the resource from the project.* When the provider destroys these keys, any data previously encrypted with these keys will be irrecoverable. - For this reason, it is strongly recommended that you add - lifecycle - hooks to the resource to prevent accidental destruction. + For this reason, it is strongly recommended that you use Pulumi's [protect resource option](https://www.pulumi.com/docs/concepts/options/protect/). To get more information about CryptoKey, see: