From 16ec0c44a5d011711f0f30284c896264ec4951e7 Mon Sep 17 00:00:00 2001 From: "alvarez.mauriciotm@gmail.com" Date: Thu, 28 May 2026 14:28:41 -0700 Subject: [PATCH 1/3] initial identity support for crypto key version --- .../kms_crypto_key_version.go.tmpl | 26 ++++++++++++++++- .../resource_kms_crypto_key_version_test.go | 29 +++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/mmv1/templates/terraform/custom_import/kms_crypto_key_version.go.tmpl b/mmv1/templates/terraform/custom_import/kms_crypto_key_version.go.tmpl index f29594e126b2..a261001ba7f6 100644 --- a/mmv1/templates/terraform/custom_import/kms_crypto_key_version.go.tmpl +++ b/mmv1/templates/terraform/custom_import/kms_crypto_key_version.go.tmpl @@ -1,7 +1,22 @@ config := meta.(*transport_tpg.Config) + identity, identityErr := d.Identity() - cryptoKeyVersionId, err := parseKmsCryptoKeyVersionId(d.Id(), config) + importId := d.Id() + if importId == "" { + if identityErr != nil || identity == nil { + return nil, fmt.Errorf("Error reading import identity: %s", identityErr) + } + + identityName, ok := identity.Get("name").(string) + if !ok || identityName == "" { + return nil, fmt.Errorf("Error reading import identity: missing required identity field \"name\"") + } + + importId = identityName + } + + cryptoKeyVersionId, err := parseKmsCryptoKeyVersionId(importId, config) if err != nil { return nil, err } @@ -11,6 +26,15 @@ if err := d.Set("name", cryptoKeyVersionId.Name); err != nil { return nil, fmt.Errorf("Error setting name: %s", err) } + + if identityErr == nil && identity != nil { + if err := identity.Set("name", cryptoKeyVersionId.Name); err != nil { + return nil, fmt.Errorf("Error setting identity name: %s", err) + } + } else { + log.Printf("[DEBUG] (Import) identity not set: %s", identityErr) + } + id, err := tpgresource.ReplaceVars(d, config, "{{$.GetIdFormat}}") if err != nil { return nil, fmt.Errorf("Error constructing id: %s", err) diff --git a/mmv1/third_party/terraform/services/kms/resource_kms_crypto_key_version_test.go b/mmv1/third_party/terraform/services/kms/resource_kms_crypto_key_version_test.go index 6445075c8fea..7350e001a54f 100644 --- a/mmv1/third_party/terraform/services/kms/resource_kms_crypto_key_version_test.go +++ b/mmv1/third_party/terraform/services/kms/resource_kms_crypto_key_version_test.go @@ -10,6 +10,7 @@ import ( _ "github.com/hashicorp/terraform-provider-google/google/services/resourcemanager" "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/tfversion" ) func TestAccKmsCryptoKeyVersion_basic(t *testing.T) { @@ -41,6 +42,34 @@ func TestAccKmsCryptoKeyVersion_basic(t *testing.T) { }) } +func TestAccKmsCryptoKeyVersion_importBlockWithResourceIdentity(t *testing.T) { + t.Parallel() + + projectId := fmt.Sprintf("tf-test-%d", acctest.RandInt(t)) + projectOrg := envvar.GetTestOrgFromEnv(t) + projectBillingAccount := envvar.GetTestBillingAccountFromEnv(t) + keyRingName := fmt.Sprintf("tf-test-%s", acctest.RandString(t, 10)) + cryptoKeyName := fmt.Sprintf("tf-test-%s", acctest.RandString(t, 10)) + + acctest.VcrTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_12_0), + }, + PreCheck: func() { acctest.AccTestPreCheck(t) }, + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t), + Steps: []resource.TestStep{ + { + Config: testGoogleKmsCryptoKeyVersion_basic(projectId, projectOrg, projectBillingAccount, keyRingName, cryptoKeyName), + }, + { + ResourceName: "google_kms_crypto_key_version.crypto_key_version", + ImportState: true, + ImportStateKind: resource.ImportBlockWithResourceIdentity, + }, + }, + }) +} + func TestAccKmsCryptoKeyVersionWithSymmetricHSM(t *testing.T) { t.Parallel() From e39d7d89a5a94ad90a773d23af06c15968ae4728 Mon Sep 17 00:00:00 2001 From: "alvarez.mauriciotm@gmail.com" Date: Thu, 28 May 2026 16:20:12 -0700 Subject: [PATCH 2/3] explicit checks on identity in import function --- .../kms_crypto_key_version.go.tmpl | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/mmv1/templates/terraform/custom_import/kms_crypto_key_version.go.tmpl b/mmv1/templates/terraform/custom_import/kms_crypto_key_version.go.tmpl index a261001ba7f6..6b4a3bfb3ca5 100644 --- a/mmv1/templates/terraform/custom_import/kms_crypto_key_version.go.tmpl +++ b/mmv1/templates/terraform/custom_import/kms_crypto_key_version.go.tmpl @@ -1,9 +1,11 @@ config := meta.(*transport_tpg.Config) - identity, identityErr := d.Identity() - importId := d.Id() + importByIdentity := importId == "" + var identityErr error + var identity *schema.ResourceIdentityData if importId == "" { + identity, identityErr = d.Identity() if identityErr != nil || identity == nil { return nil, fmt.Errorf("Error reading import identity: %s", identityErr) } @@ -27,12 +29,14 @@ return nil, fmt.Errorf("Error setting name: %s", err) } - if identityErr == nil && identity != nil { - if err := identity.Set("name", cryptoKeyVersionId.Name); err != nil { - return nil, fmt.Errorf("Error setting identity name: %s", err) + if importByIdentity { + if identityErr == nil && identity != nil { + if err := identity.Set("name", cryptoKeyVersionId.Name); err != nil { + return nil, fmt.Errorf("Error setting identity name: %s", err) + } + } else { + log.Printf("[DEBUG] (Import) identity not set: %s", identityErr) } - } else { - log.Printf("[DEBUG] (Import) identity not set: %s", identityErr) } id, err := tpgresource.ReplaceVars(d, config, "{{$.GetIdFormat}}") From f13133eaf30d02e9df45054ff88e8ec68513d26e Mon Sep 17 00:00:00 2001 From: "alvarez.mauriciotm@gmail.com" Date: Thu, 28 May 2026 16:32:43 -0700 Subject: [PATCH 3/3] identityData --- .../terraform/custom_import/kms_crypto_key_version.go.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mmv1/templates/terraform/custom_import/kms_crypto_key_version.go.tmpl b/mmv1/templates/terraform/custom_import/kms_crypto_key_version.go.tmpl index 6b4a3bfb3ca5..a56b4d2633c9 100644 --- a/mmv1/templates/terraform/custom_import/kms_crypto_key_version.go.tmpl +++ b/mmv1/templates/terraform/custom_import/kms_crypto_key_version.go.tmpl @@ -3,7 +3,7 @@ importId := d.Id() importByIdentity := importId == "" var identityErr error - var identity *schema.ResourceIdentityData + var identity *schema.IdentityData if importId == "" { identity, identityErr = d.Identity() if identityErr != nil || identity == nil {