Skip to content

Commit 0af58cb

Browse files
Add check before adding vsn to pvm instance
1 parent 73f7fe0 commit 0af58cb

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

ibm/service/power/resource_ibm_pi_virtual_serial_number.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,20 +83,21 @@ func resourceIBMPIVirtualSerialNumberCreate(ctx context.Context, d *schema.Resou
8383
}
8484

8585
serialString := ""
86+
oldPvmInstanceId := ""
8687
if vsnArg != AutoAssign {
8788
vsn, err := client.Get(vsnArg)
8889
if err != nil {
8990
return diag.FromErr(err)
9091
}
92+
oldPvmInstanceId = *vsn.PvmInstanceID
9193
if v, ok := d.GetOk(Arg_Description); ok {
9294
description := v.(string)
9395
if description != *vsn.Description {
94-
pvmInstanceId := *vsn.PvmInstanceID
95-
if pvmInstanceId != "" {
96+
if oldPvmInstanceId != "" {
9697
updateBody := &models.UpdateServerVirtualSerialNumber{
9798
Description: &description,
9899
}
99-
_, err := client.PVMInstanceUpdateVSN(pvmInstanceId, updateBody)
100+
_, err := client.PVMInstanceUpdateVSN(oldPvmInstanceId, updateBody)
100101
if err != nil {
101102
return diag.FromErr(err)
102103
}
@@ -116,6 +117,9 @@ func resourceIBMPIVirtualSerialNumberCreate(ctx context.Context, d *schema.Resou
116117

117118
if pvmInstanceId, ok := d.GetOk(Arg_PVMInstanceId); ok {
118119
pvmInstanceIdArg := pvmInstanceId.(string)
120+
if oldPvmInstanceId != "" && pvmInstanceIdArg != oldPvmInstanceId {
121+
return diag.Errorf("please detach virtual serial number from current pvm instance before specifying %s in creation", Arg_PVMInstanceId)
122+
}
119123
instanceClient := instance.NewIBMPIInstanceClient(ctx, sess, cloudInstanceID)
120124
restartInstance, err := stopLparForVSNChange(ctx, instanceClient, pvmInstanceIdArg, d.Timeout(schema.TimeoutCreate))
121125
if err != nil {
@@ -127,8 +131,7 @@ func resourceIBMPIVirtualSerialNumberCreate(ctx context.Context, d *schema.Resou
127131
Serial: &serialNumber,
128132
}
129133
if v, ok := d.GetOk(Arg_Description); ok {
130-
description := v.(string)
131-
addBody.Description = description
134+
addBody.Description = v.(string)
132135
}
133136
err = client.PVMInstanceAttachVSN(pvmInstanceIdArg, addBody)
134137
if err != nil {

0 commit comments

Comments
 (0)