Skip to content

Commit cf57fdd

Browse files
committed
feat(encryption-key): UI-41036: Create and apply a new encryption key when creating a snapshot from a volume
1 parent 99d1b6f commit cf57fdd

12 files changed

+11997
-10576
lines changed

common/github.com/IBM/vpc-go-sdk/vpcv1/vpc_v1.go

Lines changed: 11799 additions & 10562 deletions
Large diffs are not rendered by default.

ibm/service/vpc/data_source_ibm_is_backup_policy.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ func DataSourceIBMIsBackupPolicy() *schema.Resource {
4646
Computed: true,
4747
Description: "The CRN for this backup policy.",
4848
},
49+
"encryption_key": {
50+
Type: schema.TypeString,
51+
Computed: true,
52+
Description: "The encryption_key for this backup policy.",
53+
},
4954
"href": &schema.Schema{
5055
Type: schema.TypeString,
5156
Computed: true,
@@ -285,6 +290,9 @@ func dataSourceIBMIsBackupPolicyRead(context context.Context, d *schema.Resource
285290
if err = d.Set("href", backupPolicy.Href); err != nil {
286291
return diag.FromErr(fmt.Errorf("[ERROR] Error setting href: %s", err))
287292
}
293+
if err = d.Set("encryption_key", backupPolicy.Href); err != nil {
294+
return diag.FromErr(fmt.Errorf("[ERROR] Error setting href: %s", err))
295+
}
288296
if backupPolicy.LastJobCompletedAt != nil {
289297
if err = d.Set("last_job_completed_at", backupPolicy.LastJobCompletedAt.String()); err != nil {
290298
return diag.FromErr(fmt.Errorf("[ERROR] Error setting last_job_completed_at: %s", err))

ibm/service/vpc/data_source_ibm_is_backup_policy_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ func TestAccIBMIsBackupPolicyDataSourceBasic(t *testing.T) {
2121
subnetname := fmt.Sprintf("tf-subnet-%d", acctest.RandIntRange(10, 100))
2222
sshname := fmt.Sprintf("tf-ssh-%d", acctest.RandIntRange(10, 100))
2323
volname := fmt.Sprintf("tf-vol-%d", acctest.RandIntRange(10, 100))
24+
encryptionKey := fmt.Sprintf("tf-vol-%d", acctest.RandIntRange(10, 100))
2425
bakupPolicyName := fmt.Sprintf("tfbakuppolicyname%d", acctest.RandIntRange(10, 100))
2526
bakupPolicyPlanName := fmt.Sprintf("tfbakuppolicyplanname%d", acctest.RandIntRange(10, 100))
2627
cronSpec := strings.TrimSpace(strconv.Itoa(time.Now().UTC().Minute()) + " " + strconv.Itoa(time.Now().UTC().Hour()) + " " + "*" + " " + "*" + " " + "*")
@@ -29,7 +30,7 @@ func TestAccIBMIsBackupPolicyDataSourceBasic(t *testing.T) {
2930
Providers: acc.TestAccProviders,
3031
Steps: []resource.TestStep{
3132
resource.TestStep{
32-
Config: testAccCheckIBMIsBackupPolicyDataSourceConfigBasic(bakupPolicyName, vpcname, subnetname, sshname, volname, name, cronSpec, bakupPolicyPlanName),
33+
Config: testAccCheckIBMIsBackupPolicyDataSourceConfigBasic(bakupPolicyName, vpcname, subnetname, sshname, volname, name, cronSpec, bakupPolicyPlanName, encryptionKey),
3334
Check: resource.ComposeTestCheckFunc(
3435
resource.TestCheckResourceAttrSet("data.ibm_is_backup_policy.is_backup_policy", "created_at"),
3536
resource.TestCheckResourceAttrSet("data.ibm_is_backup_policy.is_backup_policy", "crn"),
@@ -38,6 +39,7 @@ func TestAccIBMIsBackupPolicyDataSourceBasic(t *testing.T) {
3839
resource.TestCheckResourceAttrSet("data.ibm_is_backup_policy.is_backup_policy", "match_resource_types.#"),
3940
resource.TestCheckResourceAttrSet("data.ibm_is_backup_policy.is_backup_policy", "match_user_tags.#"),
4041
resource.TestCheckResourceAttrSet("data.ibm_is_backup_policy.is_backup_policy", "name"),
42+
resource.TestCheckResourceAttrSet("data.ibm_is_backup_policy.is_backup_policy", "encryption_key"),
4143
resource.TestCheckResourceAttrSet("data.ibm_is_backup_policy.is_backup_policy", "plans.#"),
4244
// resource.TestCheckResourceAttrSet("data.ibm_is_backup_policy.is_backup_policy", "plans.0.href"),
4345
resource.TestCheckResourceAttrSet("data.ibm_is_backup_policy.is_backup_policy", "plans.0.id"),
@@ -54,7 +56,7 @@ func TestAccIBMIsBackupPolicyDataSourceBasic(t *testing.T) {
5456
})
5557
}
5658

57-
func testAccCheckIBMIsBackupPolicyDataSourceConfigBasic(backupPolicyName, vpcname, subnetname, sshname, volName, name, cronSpec, bakupPolicyPlanName string) string {
59+
func testAccCheckIBMIsBackupPolicyDataSourceConfigBasic(backupPolicyName, vpcname, subnetname, sshname, volName, name, cronSpec, bakupPolicyPlanName, encryptionKey string) string {
5860

5961
return testAccCheckIBMIsBackupPolicyPlanConfigBasic(backupPolicyName, vpcname, subnetname, sshname, volName, name, cronSpec, bakupPolicyPlanName) + fmt.Sprintf(`
6062
data "ibm_is_backup_policy" "is_backup_policy" {

ibm/service/vpc/data_source_ibm_is_snapshot_consistency_group_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
func TestAccIBMIsSnapshotConsistencyGroupDataSourceBasic(t *testing.T) {
1818
vpcname := fmt.Sprintf("tf-vpc-%d", acctest.RandIntRange(10, 100))
1919
name := fmt.Sprintf("tf-instance-%d", acctest.RandIntRange(10, 100))
20+
encrptionKey := fmt.Sprintf("tf-instance-%d", acctest.RandIntRange(10, 100))
2021
subnetname := fmt.Sprintf("tf-subnet-%d", acctest.RandIntRange(10, 100))
2122
publicKey := strings.TrimSpace(`
2223
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVERRN7/9484SOBJ3HSKxxNG5JN8owAjy5f9yYwcUg+JaUVuytn5Pv3aeYROHGGg+5G346xaq3DAwX6Y5ykr2fvjObgncQBnuU5KHWCECO/4h8uWuwh/kfniXPVjFToc+gnkqA+3RKpAecZhFXwfalQ9mMuYGFxn+fwn8cYEApsJbsEmb0iJwPiZ5hjFC8wREuiTlhPHDgkBLOiycd20op2nXzDbHfCHInquEe/gYxEitALONxm0swBOwJZwlTDOB7C6y2dzlrtxr1L59m7pCkWI4EtTRLvleehBoj3u7jB4usR
@@ -30,11 +31,12 @@ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVE
3031
Providers: acc.TestAccProviders,
3132
Steps: []resource.TestStep{
3233
resource.TestStep{
33-
Config: testAccCheckIBMIsSnapshotConsistencyGroupDataSourceConfigBasic(vpcname, subnetname, sshname, publicKey, name, scgname, snapname, deleteSnapshotsOnDelete),
34+
Config: testAccCheckIBMIsSnapshotConsistencyGroupDataSourceConfigBasic(vpcname, subnetname, sshname, publicKey, name, scgname, snapname, deleteSnapshotsOnDelete, encrptionKey),
3435
Check: resource.ComposeTestCheckFunc(
3536
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_group.is_snapshot_consistency_group", "id"),
3637
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_group.is_snapshot_consistency_group", "created_at"),
3738
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_group.is_snapshot_consistency_group", "crn"),
39+
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_groups.is_snapshot_consistency_groups", "snapshot_consistency_groups.0.encryption_key"),
3840
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_group.is_snapshot_consistency_group", "delete_snapshots_on_delete"),
3941
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_group.is_snapshot_consistency_group", "href"),
4042
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_group.is_snapshot_consistency_group", "lifecycle_state"),
@@ -52,8 +54,8 @@ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVE
5254
})
5355
}
5456

55-
func testAccCheckIBMIsSnapshotConsistencyGroupDataSourceConfigBasic(vpcname, subnetname, sshname, publicKey, name, snapname, scgname, deleteSnapshotsOnDelete string) string {
56-
return testAccCheckIBMIsSnapshotConsistencyGroupConfig(vpcname, subnetname, sshname, publicKey, name, scgname, snapname, deleteSnapshotsOnDelete) + fmt.Sprintf(`
57+
func testAccCheckIBMIsSnapshotConsistencyGroupDataSourceConfigBasic(vpcname, subnetname, sshname, publicKey, name, snapname, scgname, deleteSnapshotsOnDelete, encrptionKey string) string {
58+
return testAccCheckIBMIsSnapshotConsistencyGroupConfig(vpcname, subnetname, sshname, publicKey, name, scgname, snapname, deleteSnapshotsOnDelete, encrptionKey) + fmt.Sprintf(`
5759
data "ibm_is_snapshot_consistency_group" "is_snapshot_consistency_group" {
5860
identifier = ibm_is_snapshot_consistency_group.is_snapshot_consistency_group.id
5961
}

ibm/service/vpc/data_source_ibm_is_snapshot_consistency_groups_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
func TestAccIBMIsSnapshotConsistencyGroupsDataSourceBasic(t *testing.T) {
1818
vpcname := fmt.Sprintf("tf-vpc-%d", acctest.RandIntRange(10, 100))
1919
name := fmt.Sprintf("tf-instance-%d", acctest.RandIntRange(10, 100))
20+
encrptionKey := fmt.Sprintf("tf-instance-%d", acctest.RandIntRange(10, 100))
2021
subnetname := fmt.Sprintf("tf-subnet-%d", acctest.RandIntRange(10, 100))
2122
publicKey := strings.TrimSpace(`
2223
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVERRN7/9484SOBJ3HSKxxNG5JN8owAjy5f9yYwcUg+JaUVuytn5Pv3aeYROHGGg+5G346xaq3DAwX6Y5ykr2fvjObgncQBnuU5KHWCECO/4h8uWuwh/kfniXPVjFToc+gnkqA+3RKpAecZhFXwfalQ9mMuYGFxn+fwn8cYEApsJbsEmb0iJwPiZ5hjFC8wREuiTlhPHDgkBLOiycd20op2nXzDbHfCHInquEe/gYxEitALONxm0swBOwJZwlTDOB7C6y2dzlrtxr1L59m7pCkWI4EtTRLvleehBoj3u7jB4usR
@@ -30,12 +31,13 @@ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVE
3031
Providers: acc.TestAccProviders,
3132
Steps: []resource.TestStep{
3233
resource.TestStep{
33-
Config: testAccCheckIBMIsSnapshotConsistencyGroupsDataSourceConfigBasic(vpcname, subnetname, sshname, publicKey, name, scgname, snapname, deleteSnapshotsOnDelete),
34+
Config: testAccCheckIBMIsSnapshotConsistencyGroupsDataSourceConfigBasic(vpcname, subnetname, sshname, publicKey, name, scgname, snapname, deleteSnapshotsOnDelete, encrptionKey),
3435
Check: resource.ComposeTestCheckFunc(
3536
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_groups.is_snapshot_consistency_groups", "id"),
3637
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_groups.is_snapshot_consistency_groups", "snapshot_consistency_groups.#"),
3738
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_groups.is_snapshot_consistency_groups", "snapshot_consistency_groups.0.created_at"),
3839
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_groups.is_snapshot_consistency_groups", "snapshot_consistency_groups.0.crn"),
40+
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_groups.is_snapshot_consistency_groups", "snapshot_consistency_groups.0.encryption_key"),
3941
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_groups.is_snapshot_consistency_groups", "snapshot_consistency_groups.0.delete_snapshots_on_delete"),
4042
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_groups.is_snapshot_consistency_groups", "snapshot_consistency_groups.0.href"),
4143
resource.TestCheckResourceAttrSet("data.ibm_is_snapshot_consistency_groups.is_snapshot_consistency_groups", "snapshot_consistency_groups.0.lifecycle_state"),
@@ -53,8 +55,8 @@ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVE
5355
})
5456
}
5557

56-
func testAccCheckIBMIsSnapshotConsistencyGroupsDataSourceConfigBasic(vpcname, subnetname, sshname, publicKey, name, snapname, scgname, deleteSnapshotsOnDelete string) string {
57-
return testAccCheckIBMIsSnapshotConsistencyGroupConfig(vpcname, subnetname, sshname, publicKey, name, scgname, snapname, deleteSnapshotsOnDelete) + fmt.Sprintf(`
58+
func testAccCheckIBMIsSnapshotConsistencyGroupsDataSourceConfigBasic(vpcname, subnetname, sshname, publicKey, name, snapname, scgname, deleteSnapshotsOnDelete, encrptionKey string) string {
59+
return testAccCheckIBMIsSnapshotConsistencyGroupConfig(vpcname, subnetname, sshname, publicKey, name, scgname, snapname, deleteSnapshotsOnDelete, encrptionKey) + fmt.Sprintf(`
5860
data "ibm_is_snapshot_consistency_groups" "is_snapshot_consistency_groups" {
5961
}
6062
`)

ibm/service/vpc/resource_ibm_is_backup_policy.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ import (
1717
"github.com/IBM/vpc-go-sdk/vpcv1"
1818
)
1919

20+
const (
21+
isBackupPolicyEncryptionKey = "encryption_key"
22+
)
23+
2024
func ResourceIBMIsBackupPolicy() *schema.Resource {
2125
return &schema.Resource{
2226
CreateContext: resourceIBMIsBackupPolicyCreate,
@@ -60,6 +64,12 @@ func ResourceIBMIsBackupPolicy() *schema.Resource {
6064
Description: "The included content for backups created using this policy",
6165
Elem: &schema.Schema{Type: schema.TypeString, ValidateFunc: validate.InvokeValidator("ibm_is_backup_policy", "included_content")},
6266
},
67+
isBackupPolicyEncryptionKey: &schema.Schema{
68+
Type: schema.TypeString,
69+
Optional: true,
70+
Computed: true,
71+
Description: "A reference to the root key used to wrap the data encryption key for the source volume.",
72+
},
6373
"name": &schema.Schema{
6474
Type: schema.TypeString,
6575
Required: true,
@@ -237,6 +247,14 @@ func resourceIBMIsBackupPolicyCreate(context context.Context, d *schema.Resource
237247
if _, ok := d.GetOk("name"); ok {
238248
backupPolicyPrototype.Name = core.StringPtr(d.Get("name").(string))
239249
}
250+
//what is core and flex? what if this encryption is nil
251+
if encryptionKey, ok := d.GetOk(isBackupPolicyEncryptionKey); ok {
252+
encryptionKeyString := encryptionKey.(string)
253+
backupPolicyPrototype.EncryptionKey = &vpcv1.BackupPolicyPrototypeEncryptionKey{
254+
CRN: &encryptionKeyString,
255+
}
256+
}
257+
240258
if resGroup, ok := d.GetOk("resource_group"); ok {
241259
resourceGroupStr := resGroup.(string)
242260
resourceGroup := vpcv1.ResourceGroupIdentity{
@@ -424,6 +442,19 @@ func resourceIBMIsBackupPolicyUpdate(context context.Context, d *schema.Resource
424442
patchVals.IncludedContent = (flex.ExpandStringList((d.Get("included_content").(*schema.Set)).List()))
425443
hasChange = true
426444
}
445+
446+
if d.HasChange("encryption_key") {
447+
if encryptionKeySet, ok := d.Get("encryption_key").(*schema.Set); ok {
448+
if encryptionKeySet.Len() > 0 {
449+
encryptstr := encryptionKeySet.List()[0].(string)
450+
patchVals.EncryptionKey = &vpcv1.EncryptionKeyIdentity{
451+
CRN: &encryptstr,
452+
}
453+
}
454+
hasChange = true
455+
}
456+
}
457+
427458
updateBackupPolicyOptions.SetIfMatch(d.Get("version").(string))
428459
if hasChange {
429460
updateBackupPolicyOptions.BackupPolicyPatch, _ = patchVals.AsPatch()

ibm/service/vpc/resource_ibm_is_backup_policy_test.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ func TestAccIBMIsBackupPolicyBasic(t *testing.T) {
3939
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "resource_group"),
4040
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "created_at"),
4141
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "crn"),
42+
resource.TestCheckResourceAttrSet("data.ibm_is_backup_policy.is_backup_policy", "encryption_key"),
4243
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "href"),
4344
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "lifecycle_state"),
4445
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "resource_type"),
@@ -54,6 +55,7 @@ func TestAccIBMIsBackupPolicyBasic(t *testing.T) {
5455
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "resource_group"),
5556
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "created_at"),
5657
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "crn"),
58+
resource.TestCheckResourceAttrSet("data.ibm_is_backup_policy.is_backup_policy", "encryption_key"),
5759
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "href"),
5860
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "lifecycle_state"),
5961
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "resource_type"),
@@ -289,3 +291,46 @@ func testAccCheckIBMIsBackupPolicyConfigBasicWithScope(backupPolicyName, entCrn
289291
}
290292
}`, backupPolicyName, entCrn)
291293
}
294+
295+
func TestAccIBMIsBackupPolicyBasicWithEncryptKey(t *testing.T) {
296+
backupPolicyName := fmt.Sprintf("tfbakuppolicyname%d", acctest.RandIntRange(10, 100))
297+
resource.Test(t, resource.TestCase{
298+
PreCheck: func() { acc.TestAccPreCheck(t) },
299+
Providers: acc.TestAccProviders,
300+
CheckDestroy: testAccCheckIBMIsBackupPolicyDestroy,
301+
Steps: []resource.TestStep{
302+
resource.TestStep{
303+
Config: testAccCheckIBMIsBackupPolicyConfigBasicWithScope(backupPolicyName, acc.ShareEncryptionKey),
304+
Check: resource.ComposeAggregateTestCheckFunc(
305+
resource.TestCheckResourceAttr("ibm_is_backup_policy.is_backup_policy", "name", backupPolicyName),
306+
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "match_resource_types.#"),
307+
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "match_user_tags.#"),
308+
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "resource_group"),
309+
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "encryption_key"),
310+
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "created_at"),
311+
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "crn"),
312+
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "href"),
313+
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "scope.#"),
314+
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "scope.0.id"),
315+
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "lifecycle_state"),
316+
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "resource_type"),
317+
resource.TestCheckResourceAttrSet("ibm_is_backup_policy.is_backup_policy", "version"),
318+
),
319+
},
320+
{
321+
ResourceName: "ibm_is_backup_policy.is_backup_policy",
322+
ImportState: true,
323+
ImportStateVerify: true,
324+
},
325+
},
326+
})
327+
}
328+
329+
func testAccCheckIBMIsBackupPolicyConfigBasicWithEncryptKey(backupPolicyName, encryptionKey string) string {
330+
return fmt.Sprintf(`
331+
resource "ibm_is_backup_policy" "is_backup_policy" {
332+
match_user_tags = ["dev:test"]
333+
name = "%s"
334+
encryption_key = "%s"
335+
}`, backupPolicyName, encryptionKey)
336+
}

ibm/service/vpc/resource_ibm_is_lb_pool.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ func lbPoolCreate(d *schema.ResourceData, meta interface{}, name, lbID, algorith
304304
Algorithm: &algorithm,
305305
Protocol: &protocol,
306306
Name: &name,
307-
HealthMonitor: &vpcv1.LoadBalancerPoolHealthMonitorPrototype{
307+
HealthMonitor: vpcv1.LoadBalancerPoolHealthMonitorPrototype{
308308
Delay: &healthDelay,
309309
MaxRetries: &maxRetries,
310310
Timeout: &healthTimeOut,

ibm/service/vpc/resource_ibm_is_snapshot.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,12 @@ func resourceIBMISSnapshotCreate(d *schema.ResourceData, meta interface{}) error
533533
name := snapshotName.(string)
534534
snapshotprototypeoptions.Name = &name
535535
}
536+
if encryptionKey, ok := d.GetOk(isSnapshotEncryptionKey); ok {
537+
encryptionKeyString := encryptionKey.(string)
538+
snapshotprototypeoptionsbysourcesnapshot.EncryptionKey = &vpcv1.EncryptionKeyIdentity{
539+
CRN: &encryptionKeyString,
540+
}
541+
}
536542

537543
if grp, ok := d.GetOk(isVPCResourceGroup); ok {
538544
rg := grp.(string)
@@ -1133,7 +1139,7 @@ func snapshotDelete(d *schema.ResourceData, meta interface{}, id string) error {
11331139
deleteSnapshotOptions := &vpcv1.DeleteSnapshotOptions{
11341140
ID: &id,
11351141
}
1136-
response, err = sess.DeleteSnapshot(deleteSnapshotOptions)
1142+
_, response, err = sess.DeleteSnapshot(deleteSnapshotOptions)
11371143
if err != nil {
11381144
return fmt.Errorf("[ERROR] Error deleting Snapshot : %s\n%s", err, response)
11391145
}

ibm/service/vpc/resource_ibm_is_snapshot_consistency_group.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ func ResourceIBMIsSnapshotConsistencyGroup() *schema.Resource {
6161
Optional: true,
6262
Description: "The name for this snapshot. The name is unique across all snapshots in the region.",
6363
},
64+
"encryption_key": {
65+
Type: schema.TypeString,
66+
Optional: true,
67+
Computed: true,
68+
Description: "A reference to the root key used to wrap the data encryption key for the source volume.",
69+
},
6470
"source_volume": {
6571
Type: schema.TypeString,
6672
Required: true,
@@ -331,6 +337,13 @@ func resourceIBMIsSnapshotConsistencyGroupCreate(context context.Context, d *sch
331337
snapshotConsistencyGroupPrototypeSnapshotsItem.Name = &name
332338
}
333339

340+
if encryptionKey, ok := d.GetOk(isSnapshotEncryptionKey); ok {
341+
encryptionKeyString := encryptionKey.(string)
342+
snapshotConsistencyGroupPrototypeSnapshotsItem.EncryptionKey = &vpcv1.EncryptionKeyIdentity{
343+
CRN: &encryptionKeyString,
344+
}
345+
}
346+
334347
userTags := snapshotVal["tags"].(*schema.Set)
335348
if userTags != nil && userTags.Len() != 0 {
336349
userTagsArray := make([]string, userTags.Len())

0 commit comments

Comments
 (0)