Skip to content

Commit eb392a2

Browse files
fix(kms): certificate chain type to array of strings (#9582) (#7045)
[upstream:216fffd274b08af2e3f718d3d8aeb8cb6410b420] Signed-off-by: Modular Magician <[email protected]>
1 parent 7d64488 commit eb392a2

File tree

3 files changed

+82
-3
lines changed

3 files changed

+82
-3
lines changed

.changelog/9582.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
kms: fixed issue where `google_kms_crypto_key_version.attestation.cert_chains` properties were incorrectly set to type string
3+
```

google-beta/services/kms/resource_kms_crypto_key_test.go

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,35 @@ func TestAccKmsCryptoKeyVersion_basic(t *testing.T) {
446446
})
447447
}
448448

449+
func TestAccKmsCryptoKeyVersionWithSymmetricHSM(t *testing.T) {
450+
t.Parallel()
451+
452+
projectId := fmt.Sprintf("tf-test-%d", acctest.RandInt(t))
453+
projectOrg := envvar.GetTestOrgFromEnv(t)
454+
projectBillingAccount := envvar.GetTestBillingAccountFromEnv(t)
455+
keyRingName := fmt.Sprintf("tf-test-%s", acctest.RandString(t, 10))
456+
cryptoKeyName := fmt.Sprintf("tf-test-%s", acctest.RandString(t, 10))
457+
458+
acctest.VcrTest(t, resource.TestCase{
459+
PreCheck: func() { acctest.AccTestPreCheck(t) },
460+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
461+
Steps: []resource.TestStep{
462+
{
463+
Config: testGoogleKmsCryptoKeyVersionWithSymmetricHSM(projectId, projectOrg, projectBillingAccount, keyRingName, cryptoKeyName),
464+
},
465+
{
466+
ResourceName: "google_kms_crypto_key_version.crypto_key_version",
467+
ImportState: true,
468+
ImportStateVerify: true,
469+
ImportStateVerifyIgnore: []string{"labels", "terraform_labels"},
470+
},
471+
{
472+
Config: testGoogleKmsCryptoKeyVersion_removed(projectId, projectOrg, projectBillingAccount, keyRingName, cryptoKeyName),
473+
},
474+
},
475+
})
476+
}
477+
449478
func TestAccKmsCryptoKeyVersion_skipInitialVersion(t *testing.T) {
450479
t.Parallel()
451480

@@ -749,6 +778,44 @@ resource "google_kms_crypto_key_version" "crypto_key_version" {
749778
`, projectId, projectId, projectOrg, projectBillingAccount, keyRingName, cryptoKeyName)
750779
}
751780

781+
func testGoogleKmsCryptoKeyVersionWithSymmetricHSM(projectId, projectOrg, projectBillingAccount, keyRingName, cryptoKeyName string) string {
782+
return fmt.Sprintf(`
783+
resource "google_project" "acceptance" {
784+
name = "%s"
785+
project_id = "%s"
786+
org_id = "%s"
787+
billing_account = "%s"
788+
}
789+
790+
resource "google_project_service" "acceptance" {
791+
project = google_project.acceptance.project_id
792+
service = "cloudkms.googleapis.com"
793+
}
794+
795+
resource "google_kms_key_ring" "key_ring" {
796+
project = google_project_service.acceptance.project
797+
name = "%s"
798+
location = "us-central1"
799+
}
800+
801+
resource "google_kms_crypto_key" "crypto_key" {
802+
name = "%s"
803+
key_ring = google_kms_key_ring.key_ring.id
804+
labels = {
805+
key = "value"
806+
}
807+
version_template {
808+
algorithm = "GOOGLE_SYMMETRIC_ENCRYPTION"
809+
protection_level = "HSM"
810+
}
811+
}
812+
813+
resource "google_kms_crypto_key_version" "crypto_key_version" {
814+
crypto_key = google_kms_crypto_key.crypto_key.id
815+
}
816+
`, projectId, projectId, projectOrg, projectBillingAccount, keyRingName, cryptoKeyName)
817+
}
818+
752819
func testGoogleKmsCryptoKeyVersion_removed(projectId, projectOrg, projectBillingAccount, keyRingName, cryptoKeyName string) string {
753820
return fmt.Sprintf(`
754821
resource "google_project" "acceptance" {

google-beta/services/kms/resource_kms_crypto_key_version.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,19 +83,28 @@ Only provided for key versions with protectionLevel HSM.`,
8383
Elem: &schema.Resource{
8484
Schema: map[string]*schema.Schema{
8585
"cavium_certs": {
86-
Type: schema.TypeString,
86+
Type: schema.TypeList,
8787
Optional: true,
8888
Description: `Cavium certificate chain corresponding to the attestation.`,
89+
Elem: &schema.Schema{
90+
Type: schema.TypeString,
91+
},
8992
},
9093
"google_card_certs": {
91-
Type: schema.TypeString,
94+
Type: schema.TypeList,
9295
Optional: true,
9396
Description: `Google card certificate chain corresponding to the attestation.`,
97+
Elem: &schema.Schema{
98+
Type: schema.TypeString,
99+
},
94100
},
95101
"google_partition_certs": {
96-
Type: schema.TypeString,
102+
Type: schema.TypeList,
97103
Optional: true,
98104
Description: `Google partition certificate chain corresponding to the attestation.`,
105+
Elem: &schema.Schema{
106+
Type: schema.TypeString,
107+
},
99108
},
100109
},
101110
},

0 commit comments

Comments
 (0)