Skip to content

Commit 49a3c89

Browse files
authored
Deprecate Arg_PlacementGroupName for Arg_PlacementGroupID (IBM-Cloud#6507)
You can currently put either the name or the id in the current name field, but we prefer if customers use the id and as such we are trying to improve guidance. Update deprecation message Remove non zero check
1 parent 3bc504c commit 49a3c89

7 files changed

+71
-41
lines changed

ibm/acctest/acctest.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ var (
247247
Pi_network_security_group_id string
248248
Pi_network_security_group_rule_id string
249249
Pi_peer_interface_id string
250-
Pi_placement_group_name string
250+
Pi_placement_group_id string
251251
Pi_remote_id string
252252
Pi_remote_type string
253253
Pi_replication_volume_name string
@@ -1346,10 +1346,10 @@ func init() {
13461346
fmt.Println("[INFO] Set the environment variable PI_SAP_PROFILE_ID for testing ibm_pi_sap_profile resource else it is set to default value 'terraform-test-power'")
13471347
}
13481348

1349-
Pi_placement_group_name = os.Getenv("PI_PLACEMENT_GROUP_NAME")
1350-
if Pi_placement_group_name == "" {
1351-
Pi_placement_group_name = "tf-pi-placement-group"
1352-
fmt.Println("[WARN] Set the environment variable PI_PLACEMENT_GROUP_NAME for testing ibm_pi_placement_group resource else it is set to default value 'tf-pi-placement-group'")
1349+
Pi_placement_group_id = os.Getenv("PI_PLACEMENT_GROUP_ID")
1350+
if Pi_placement_group_id == "" {
1351+
Pi_placement_group_id = "tf-pi-placement-group"
1352+
fmt.Println("[WARN] Set the environment variable PI_PLACEMENT_GROUP_ID for testing ibm_pi_placement_group resource else it is set to default value 'tf-pi-placement-group'")
13531353
}
13541354

13551355
Pi_remote_id = os.Getenv("PI_REMOTE_ID")

ibm/service/power/data_source_ibm_pi_placement_group.go

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package power
55

66
import (
77
"context"
8+
"fmt"
89
"log"
910

1011
"github.com/IBM-Cloud/power-go-client/clients/instance"
@@ -26,11 +27,20 @@ func DataSourceIBMPIPlacementGroup() *schema.Resource {
2627
Type: schema.TypeString,
2728
ValidateFunc: validation.NoZeroValues,
2829
},
30+
Arg_PlacementGroupID: {
31+
AtLeastOneOf: []string{Arg_PlacementGroupID, Arg_PlacementGroupName},
32+
ConflictsWith: []string{Arg_PlacementGroupName},
33+
Description: "The placement group ID.",
34+
Optional: true,
35+
Type: schema.TypeString,
36+
},
2937
Arg_PlacementGroupName: {
30-
Description: "The name of the placement group.",
31-
Required: true,
32-
Type: schema.TypeString,
33-
ValidateFunc: validation.NoZeroValues,
38+
AtLeastOneOf: []string{Arg_PlacementGroupID, Arg_PlacementGroupName},
39+
ConflictsWith: []string{Arg_PlacementGroupID},
40+
Deprecated: "The pi_placement_group_name field is deprecated. Please use pi_placement_group_id instead.",
41+
Description: "The name of the placement group.",
42+
Optional: true,
43+
Type: schema.TypeString,
3444
},
3545

3646
// Attribute
@@ -45,6 +55,11 @@ func DataSourceIBMPIPlacementGroup() *schema.Resource {
4555
Elem: &schema.Schema{Type: schema.TypeString},
4656
Type: schema.TypeList,
4757
},
58+
Attr_Name: {
59+
Computed: true,
60+
Description: "The name of the placement group.",
61+
Type: schema.TypeString,
62+
},
4863
Attr_Policy: {
4964
Computed: true,
5065
Description: "The value of the group's affinity policy. Valid values are affinity and anti-affinity.",
@@ -61,33 +76,42 @@ func DataSourceIBMPIPlacementGroup() *schema.Resource {
6176
}
6277
}
6378

64-
func dataSourceIBMPIPlacementGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
79+
func dataSourceIBMPIPlacementGroupRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
6580
sess, err := meta.(conns.ClientSession).IBMPISession()
6681
if err != nil {
67-
return diag.FromErr(err)
82+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("IBMPISession failed: %s", err.Error()), "(Data) ibm_pi_placement_group", "read")
83+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
84+
return tfErr.GetDiag()
6885
}
6986

7087
cloudInstanceID := d.Get(Arg_CloudInstanceID).(string)
71-
placementGroupName := d.Get(Arg_PlacementGroupName).(string)
72-
client := instance.NewIBMPIPlacementGroupClient(ctx, sess, cloudInstanceID)
88+
var placementGroupID string
89+
if v, ok := d.GetOk(Arg_PlacementGroupID); ok {
90+
placementGroupID = v.(string)
91+
} else if v, ok := d.GetOk(Arg_PlacementGroupName); ok {
92+
placementGroupID = v.(string)
93+
}
7394

74-
response, err := client.Get(placementGroupName)
95+
client := instance.NewIBMPIPlacementGroupClient(ctx, sess, cloudInstanceID)
96+
placementGroup, err := client.Get(placementGroupID)
7597
if err != nil {
76-
log.Printf("[DEBUG] err %s", err)
77-
return diag.FromErr(err)
98+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Get failed: %s", err.Error()), "(Data) ibm_pi_placement_group", "read")
99+
log.Printf("[DEBUG] err \n%s", tfErr.GetDebugMessage())
100+
return tfErr.GetDiag()
78101
}
79102

80-
d.SetId(*response.ID)
81-
if response.Crn != "" {
82-
d.Set(Attr_CRN, response.Crn)
83-
userTags, err := flex.GetGlobalTagsUsingCRN(meta, string(response.Crn), "", UserTagType)
103+
d.SetId(*placementGroup.ID)
104+
if placementGroup.Crn != "" {
105+
d.Set(Attr_CRN, placementGroup.Crn)
106+
userTags, err := flex.GetGlobalTagsUsingCRN(meta, string(placementGroup.Crn), "", UserTagType)
84107
if err != nil {
85-
log.Printf("Error on get of placement group (%s) user_tags: %s", *response.ID, err)
108+
log.Printf("Error on get of placement group (%s) user_tags: %s", *placementGroup.ID, err)
86109
}
87110
d.Set(Attr_UserTags, userTags)
88111
}
89-
d.Set(Attr_Members, response.Members)
90-
d.Set(Attr_Policy, response.Policy)
112+
d.Set(Attr_Members, placementGroup.Members)
113+
d.Set(Attr_Name, placementGroup.Name)
114+
d.Set(Attr_Policy, placementGroup.Policy)
91115

92116
return nil
93117
}

ibm/service/power/data_source_ibm_pi_placement_group_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1212
)
1313

14-
func TestAccIBMPIPlacementGroupDataSource_basic(t *testing.T) {
14+
func TestAccIBMPIPlacementGroupDataSourceBasic(t *testing.T) {
1515
resource.Test(t, resource.TestCase{
1616
PreCheck: func() { acc.TestAccPreCheck(t) },
1717
Providers: acc.TestAccProviders,
@@ -29,7 +29,7 @@ func TestAccIBMPIPlacementGroupDataSource_basic(t *testing.T) {
2929
func testAccCheckIBMPIPlacementGroupDataSourceConfig() string {
3030
return fmt.Sprintf(`
3131
data "ibm_pi_placement_group" "testacc_ds_placement_group" {
32-
pi_placement_group_name = "%s"
33-
pi_cloud_instance_id = "%s"
34-
}`, acc.Pi_placement_group_name, acc.Pi_cloud_instance_id)
32+
pi_cloud_instance_id = "%[1]s"
33+
pi_placement_group_id = "%[2]s"
34+
}`, acc.Pi_cloud_instance_id, acc.Pi_placement_group_id)
3535
}

ibm/service/power/data_source_ibm_pi_placement_groups.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package power
55

66
import (
77
"context"
8+
"fmt"
89
"log"
910

1011
"github.com/IBM-Cloud/power-go-client/clients/instance"
@@ -52,7 +53,7 @@ func DataSourceIBMPIPlacementGroups() *schema.Resource {
5253
},
5354
Attr_Name: {
5455
Computed: true,
55-
Description: "User defined name for the placement group.",
56+
Description: "The name of the placement group.",
5657
Type: schema.TypeString,
5758
},
5859
Attr_Policy: {
@@ -74,24 +75,27 @@ func DataSourceIBMPIPlacementGroups() *schema.Resource {
7475
}
7576
}
7677

77-
func dataSourceIBMPIPlacementGroupsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
78+
func dataSourceIBMPIPlacementGroupsRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
7879
sess, err := meta.(conns.ClientSession).IBMPISession()
7980
if err != nil {
80-
return diag.FromErr(err)
81+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("IBMPISession failed: %s", err.Error()), "(Data) ibm_pi_placement_groups", "read")
82+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
83+
return tfErr.GetDiag()
8184
}
8285

8386
cloudInstanceID := d.Get(Arg_CloudInstanceID).(string)
8487

8588
client := instance.NewIBMPIPlacementGroupClient(ctx, sess, cloudInstanceID)
8689
groups, err := client.GetAll()
8790
if err != nil {
88-
log.Printf("[ERROR] get all placement groups failed %v", err)
89-
return diag.FromErr(err)
91+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetAll failed: %s", err.Error()), "(Data) ibm_pi_placement_groups", "read")
92+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
93+
return tfErr.GetDiag()
9094
}
9195

92-
result := make([]map[string]interface{}, 0, len(groups.PlacementGroups))
96+
result := make([]map[string]any, 0, len(groups.PlacementGroups))
9397
for _, placementGroup := range groups.PlacementGroups {
94-
key := map[string]interface{}{
98+
key := map[string]any{
9599
Attr_ID: placementGroup.ID,
96100
Attr_Members: placementGroup.Members,
97101
Attr_Name: placementGroup.Name,

ibm/service/power/data_source_ibm_pi_placement_groups_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ import (
1111
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1212
)
1313

14-
func TestAccIBMPIPlacementGrousDataSourceBasic(t *testing.T) {
14+
func TestAccIBMPIPlacementGroupsDataSourceBasic(t *testing.T) {
1515
resource.Test(t, resource.TestCase{
1616
PreCheck: func() { acc.TestAccPreCheck(t) },
1717
Providers: acc.TestAccProviders,
1818
Steps: []resource.TestStep{
1919
{
20-
Config: testAccCheckIBMPIPlacementGrousDataSourceConfig(),
20+
Config: testAccCheckIBMPIPlacementGroupsDataSourceConfig(),
2121
Check: resource.ComposeTestCheckFunc(
2222
resource.TestCheckResourceAttrSet("data.ibm_pi_placement_groups.test", "id"),
2323
),
@@ -26,7 +26,7 @@ func TestAccIBMPIPlacementGrousDataSourceBasic(t *testing.T) {
2626
})
2727
}
2828

29-
func testAccCheckIBMPIPlacementGrousDataSourceConfig() string {
29+
func testAccCheckIBMPIPlacementGroupsDataSourceConfig() string {
3030
return fmt.Sprintf(`
3131
data "ibm_pi_placement_groups" "test" {
3232
pi_cloud_instance_id = "%s"

website/docs/d/pi_placement_group.html.markdown

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ Retrieve information about a placement group. For more information, about placem
1414

1515
```terraform
1616
data "ibm_pi_placement_group" "ds_placement_group" {
17-
pi_placement_group_name = "my-pg"
18-
pi_cloud_instance_id = "49fba6c9-23f8-40bc-9899-aca322ee7d5b"
17+
pi_cloud_instance_id = "49fba6c9-23f8-40bc-9899-aca322ee7d5b"
18+
pi_placement_group_id = "7f8e2a9d-3b4c-4e4f-8e8d-f7e7e1e23456"
1919
}
2020
```
2121

@@ -40,7 +40,8 @@ Example usage:
4040
Review the argument references that you can specify for your data source.
4141

4242
- `pi_cloud_instance_id` - (Required, String) The GUID of the service instance associated with an account.
43-
- `pi_placement_group_name` - (Required, String) The name of the placement group.
43+
- `pi_placement_group_id` - (Optional, String) The placement group ID.
44+
- `pi_placement_group_name` - (Deprecated, Optional, String) The id of the placement group. Passing the name of the placement group could fail or fetch stale data. Please pass an id and use `pi_placement_group_id` instead.
4445

4546
## Attribute Reference
4647

@@ -49,5 +50,6 @@ In addition to all argument reference list, you can access the following attribu
4950
- `crn` - (String) The CRN of this resource.
5051
- `id` - (String) The ID of the placement group.
5152
- `members` - (List) List of server instances IDs that are members of the placement group.
53+
- `name` - (String) The name of the placement group.
5254
- `policy` - (String) The value of the group's affinity policy. Valid values are affinity and anti-affinity.
5355
- `user_tags` - (List) List of user tags attached to the resource.

website/docs/d/pi_placement_groups.html.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ description: |-
1010

1111
Retrieve information about all placement groups. For more information, see [getting started with IBM Power Systems Virtual Servers](https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-getting-started).
1212

13-
## Example usage
13+
## Example Usage
1414

1515
```terraform
1616
data "ibm_pi_placement_groups" "example" {

0 commit comments

Comments
 (0)