Skip to content

Commit 7e33ef6

Browse files
[Resource] Remove computed property from pi_instance pi_placement_group_id and fix placement group acceptance test (#6230)
1 parent c299f16 commit 7e33ef6

File tree

3 files changed

+34
-4
lines changed

3 files changed

+34
-4
lines changed

ibm/service/power/resource_ibm_pi_instance.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,6 @@ func ResourceIBMPIInstance() *schema.Resource {
232232
},
233233
Arg_PlacementGroupID: {
234234
Description: "Placement group ID",
235-
Computed: true,
236235
Optional: true,
237236
Type: schema.TypeString,
238237
},

ibm/service/power/resource_ibm_pi_placement_group.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"context"
88
"fmt"
99
"log"
10+
"strings"
1011
"time"
1112

1213
"github.com/IBM-Cloud/power-go-client/clients/instance"
@@ -15,6 +16,7 @@ import (
1516
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
1617
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/validate"
1718
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
19+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
1820
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1921
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
2022
)
@@ -139,10 +141,41 @@ func resourceIBMPIPlacementGroupDelete(ctx context.Context, d *schema.ResourceDa
139141
cloudInstanceID := parts[0]
140142
client := instance.NewIBMPIPlacementGroupClient(ctx, sess, cloudInstanceID)
141143
err = client.Delete(parts[1])
144+
if err != nil {
145+
return diag.FromErr(err)
146+
}
142147

148+
_, err = isWaitForPIPlacementGroupDeleted(ctx, client, parts[1], d.Timeout(schema.TimeoutDelete))
143149
if err != nil {
144150
return diag.FromErr(err)
145151
}
152+
146153
d.SetId("")
147154
return nil
148155
}
156+
157+
func isWaitForPIPlacementGroupDeleted(ctx context.Context, client *instance.IBMPIPlacementGroupClient, id string, timeout time.Duration) (interface{}, error) {
158+
log.Printf("Waiting for placement group (%s) to be deleted.", id)
159+
160+
stateConf := &retry.StateChangeConf{
161+
Pending: []string{State_Deleting},
162+
Target: []string{State_NotFound},
163+
Refresh: isPIPlacementGroupDeleteRefreshFunc(client, id),
164+
Delay: 10 * time.Second,
165+
MinTimeout: 30 * time.Second,
166+
Timeout: timeout,
167+
}
168+
169+
return stateConf.WaitForStateContext(ctx)
170+
}
171+
172+
func isPIPlacementGroupDeleteRefreshFunc(client *instance.IBMPIPlacementGroupClient, id string) retry.StateRefreshFunc {
173+
return func() (interface{}, string, error) {
174+
pg, err := client.Get(id)
175+
if err != nil && strings.Contains(err.Error(), NotFound) {
176+
log.Printf("The power placement group does not exist")
177+
return pg, State_NotFound, nil
178+
}
179+
return pg, State_Deleting, nil
180+
}
181+
}

ibm/service/power/resource_ibm_pi_placement_group_test.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func TestAccIBMPIPlacementGroupBasic(t *testing.T) {
6161
{
6262
Config: testAccCheckIBMPIPlacementGroupRemoveMemberConfig(name, policy),
6363
Check: resource.ComposeTestCheckFunc(
64-
testAccCheckIBMPIPlacementGroupMemberDoesNotExist("ibm_pi_placement_group.power_placement_group", "ibm_pi_instance.power_instance"),
64+
testAccCheckIBMPIPlacementGroupMemberDoesNotExist("ibm_pi_placement_group.power_placement_group_another", "ibm_pi_instance.power_instance"),
6565
),
6666
},
6767
{
@@ -76,7 +76,6 @@ func TestAccIBMPIPlacementGroupBasic(t *testing.T) {
7676
testAccCheckIBMPIPlacementGroupMemberExistsFromInstanceCreate("ibm_pi_placement_group.power_placement_group", "ibm_pi_instance.power_instance", "ibm_pi_instance.power_instance_in_pg"),
7777
testAccCheckIBMPIPlacementGroupMemberExists("ibm_pi_placement_group.power_placement_group", "ibm_pi_instance.sap_power_instance"),
7878
),
79-
ExpectNonEmptyPlan: true,
8079
},
8180
{
8281
Config: testAccCheckIBMPIDeletePlacementGroup(name, policy),
@@ -468,7 +467,6 @@ func testAccCheckIBMPIPlacementGroupRemoveMemberConfig(name string, policy strin
468467
pi_network {
469468
network_id = "%[5]s"
470469
}
471-
pi_placement_group_id = ""
472470
}
473471
474472
resource "ibm_pi_placement_group" "power_placement_group" {

0 commit comments

Comments
 (0)