Skip to content

Commit d7f248f

Browse files
authored
Fix instance data sources to use id (IBM-Cloud#6506)
* Deprecate Arg_InstanceName for Arg_InstanceID * Update documentation * Add ibm_pi_instance_ip data source * Deprecate Arg_InstanceName for Arg_InstanceID Update documentation Add ibm_pi_instance_ip data source Remove non zero check * Fix placement of deprecation message and remove zero validation check
1 parent 0528bcb commit d7f248f

16 files changed

+293
-89
lines changed

ibm/acctest/acctest.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ var (
237237
Pi_image_bucket_region string
238238
Pi_image_bucket_secret_key string
239239
Pi_image_id string
240+
Pi_instance_id string
240241
Pi_instance_name string
241242
Pi_key_name string
242243
Pi_network_address_group_id string
@@ -1324,10 +1325,16 @@ func init() {
13241325
fmt.Println("[INFO] Set the environment variable PI_SNAPSHOT_ID for testing ibm_pi_instance_snapshot data source else it is set to default value '1ea33118-4c43-4356-bfce-904d0658de82'")
13251326
}
13261327

1327-
Pi_instance_name = os.Getenv("PI_PVM_INSTANCE_NAME")
1328+
Pi_instance_id = os.Getenv("PI_INSTANCE_ID")
1329+
if Pi_instance_id == "" {
1330+
Pi_instance_id = "terraform-test-power"
1331+
fmt.Println("[INFO] Set the environment variable PI_INSTANCE_ID for testing ibm_pi_instance resource else it is set to default value 'terraform-test-power'")
1332+
}
1333+
1334+
Pi_instance_name = os.Getenv("PI_INSTANCE_NAME")
13281335
if Pi_instance_name == "" {
13291336
Pi_instance_name = "terraform-test-power"
1330-
fmt.Println("[INFO] Set the environment variable PI_PVM_INSTANCE_ID for testing Pi_instance_name resource else it is set to default value 'terraform-test-power'")
1337+
fmt.Println("[INFO] Set the environment variable PI_INSTANCE_NAME for testing ibm_pi_instance resource else it is set to default value 'terraform-test-power'")
13311338
}
13321339

13331340
Pi_dhcp_id = os.Getenv("PI_DHCP_ID")

ibm/service/power/data_source_ibm_pi_instance.go

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,20 @@ func DataSourceIBMPIInstance() *schema.Resource {
2727
Type: schema.TypeString,
2828
ValidateFunc: validation.NoZeroValues,
2929
},
30+
Arg_InstanceID: {
31+
AtLeastOneOf: []string{Arg_InstanceID, Arg_InstanceName},
32+
ConflictsWith: []string{Arg_InstanceName},
33+
Description: "The ID of the PVM instance.",
34+
Optional: true,
35+
Type: schema.TypeString,
36+
},
3037
Arg_InstanceName: {
31-
Description: "The unique identifier or name of the instance.",
32-
Required: true,
33-
Type: schema.TypeString,
34-
ValidateFunc: validation.NoZeroValues,
38+
AtLeastOneOf: []string{Arg_InstanceID, Arg_InstanceName},
39+
ConflictsWith: []string{Arg_InstanceID},
40+
Deprecated: "The pi_instance_name field is deprecated. Please use pi_instance_id instead",
41+
Description: "The name of the PVM instance.",
42+
Optional: true,
43+
Type: schema.TypeString,
3544
},
3645

3746
// Attributes
@@ -301,9 +310,15 @@ func dataSourceIBMPIInstancesRead(ctx context.Context, d *schema.ResourceData, m
301310
}
302311

303312
cloudInstanceID := d.Get(Arg_CloudInstanceID).(string)
313+
var instanceID string
314+
if v, ok := d.GetOk(Arg_InstanceID); ok {
315+
instanceID = v.(string)
316+
} else if v, ok := d.GetOk(Arg_InstanceName); ok {
317+
instanceID = v.(string)
318+
}
304319

305320
powerC := instance.NewIBMPIInstanceClient(ctx, sess, cloudInstanceID)
306-
powervmdata, err := powerC.Get(d.Get(Arg_InstanceName).(string))
321+
powervmdata, err := powerC.Get(instanceID)
307322
if err != nil {
308323
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Get failed: %s", err.Error()), "(Data) ibm_pi_instance", "read")
309324
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())

ibm/service/power/data_source_ibm_pi_instance_console_languages.go

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,20 @@ func DataSourceIBMPIInstanceConsoleLanguages() *schema.Resource {
2929
Type: schema.TypeString,
3030
ValidateFunc: validation.NoZeroValues,
3131
},
32+
Arg_InstanceID: {
33+
AtLeastOneOf: []string{Arg_InstanceID, Arg_InstanceName},
34+
ConflictsWith: []string{Arg_InstanceName},
35+
Description: "The ID of the PVM instance.",
36+
Optional: true,
37+
Type: schema.TypeString,
38+
},
3239
Arg_InstanceName: {
33-
Description: "The unique identifier or name of the instance.",
34-
Required: true,
35-
Type: schema.TypeString,
36-
ValidateFunc: validation.NoZeroValues,
40+
AtLeastOneOf: []string{Arg_InstanceID, Arg_InstanceName},
41+
ConflictsWith: []string{Arg_InstanceID},
42+
Deprecated: "The pi_instance_name field is deprecated. Please use pi_instance_id instead",
43+
Description: "The name of the PVM instance.",
44+
Optional: true,
45+
Type: schema.TypeString,
3746
},
3847

3948
// Attributes
@@ -69,10 +78,15 @@ func dataSourceIBMPIInstanceConsoleLanguagesRead(ctx context.Context, d *schema.
6978
}
7079

7180
cloudInstanceID := d.Get(Arg_CloudInstanceID).(string)
72-
instanceName := d.Get(Arg_InstanceName).(string)
81+
var instanceID string
82+
if v, ok := d.GetOk(Arg_InstanceID); ok {
83+
instanceID = v.(string)
84+
} else if v, ok := d.GetOk(Arg_InstanceName); ok {
85+
instanceID = v.(string)
86+
}
7387

7488
client := instance.NewIBMPIInstanceClient(ctx, sess, cloudInstanceID)
75-
languages, err := client.GetConsoleLanguages(instanceName)
89+
languages, err := client.GetConsoleLanguages(instanceID)
7690
if err != nil {
7791
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetConsoleLanguages failed: %s", err.Error()), "(Data) ibm_pi_instance_console_languages", "read")
7892
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())

ibm/service/power/data_source_ibm_pi_instance_console_languages_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func TestAccIBMPIInstanceConsoleLanguages(t *testing.T) {
3131
func testAccCheckIBMPIInstanceConsoleLanguagesConfig() string {
3232
return fmt.Sprintf(`
3333
data "ibm_pi_console_languages" "example" {
34-
pi_cloud_instance_id = "%s"
35-
pi_instance_name = "%s"
36-
}`, acc.Pi_cloud_instance_id, acc.Pi_instance_name)
34+
pi_cloud_instance_id = "%[1]s"
35+
pi_instance_id = "%[2]s"
36+
}`, acc.Pi_cloud_instance_id, acc.Pi_instance_id)
3737
}

ibm/service/power/data_source_ibm_pi_instance_ip.go

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,20 @@ func DataSourceIBMPIInstanceIP() *schema.Resource {
2929
Type: schema.TypeString,
3030
ValidateFunc: validation.NoZeroValues,
3131
},
32+
Arg_InstanceID: {
33+
AtLeastOneOf: []string{Arg_InstanceID, Arg_InstanceName},
34+
ConflictsWith: []string{Arg_InstanceName},
35+
Description: "The ID of the PVM instance.",
36+
Optional: true,
37+
Type: schema.TypeString,
38+
},
3239
Arg_InstanceName: {
33-
Description: "The unique identifier or name of the instance.",
34-
Required: true,
35-
Type: schema.TypeString,
36-
ValidateFunc: validation.NoZeroValues,
40+
AtLeastOneOf: []string{Arg_InstanceID, Arg_InstanceName},
41+
ConflictsWith: []string{Arg_InstanceID},
42+
Deprecated: "The pi_instance_name field is deprecated. Please use pi_instance_id instead",
43+
Description: "The name of the PVM instance.",
44+
Optional: true,
45+
Type: schema.TypeString,
3746
},
3847
Arg_NetworkName: {
3948
Description: "The subnet that the instance belongs to.",
@@ -109,10 +118,16 @@ func dataSourceIBMPIInstancesIPRead(ctx context.Context, d *schema.ResourceData,
109118
}
110119

111120
cloudInstanceID := d.Get(Arg_CloudInstanceID).(string)
121+
var instanceID string
122+
if v, ok := d.GetOk(Arg_InstanceID); ok {
123+
instanceID = v.(string)
124+
} else if v, ok := d.GetOk(Arg_InstanceName); ok {
125+
instanceID = v.(string)
126+
}
112127
networkName := d.Get(Arg_NetworkName).(string)
113128
powerC := instance.NewIBMPIInstanceClient(ctx, sess, cloudInstanceID)
114129

115-
powervmdata, err := powerC.Get(d.Get(Arg_InstanceName).(string))
130+
powervmdata, err := powerC.Get(instanceID)
116131
if err != nil {
117132
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Get failed: %s", err.Error()), "(Data) ibm_pi_instance_ip", "read")
118133
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())

ibm/service/power/data_source_ibm_pi_instance_ip_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ func TestAccIBMPIInstanceIPDataSource_basic(t *testing.T) {
3030
func testAccCheckIBMPIInstanceIPDataSourceConfig() string {
3131
return fmt.Sprintf(`
3232
data "ibm_pi_instance_ip" "testacc_ds_instance_ip" {
33-
pi_network_name = "%[1]s"
34-
pi_instance_name = "%[2]s"
35-
pi_cloud_instance_id = "%[3]s"
36-
}`, acc.Pi_network_name, acc.Pi_instance_name, acc.Pi_cloud_instance_id)
33+
pi_cloud_instance_id = "%[1]s"
34+
pi_instance_id = "%[2]s"
35+
pi_network_name = "%[3]s"
36+
}`, acc.Pi_cloud_instance_id, acc.Pi_instance_id, acc.Pi_network_name)
3737
}

ibm/service/power/data_source_ibm_pi_instance_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func TestAccIBMPIInstanceDataSource_basic(t *testing.T) {
3131
func testAccCheckIBMPIInstanceDataSourceConfig() string {
3232
return fmt.Sprintf(`
3333
data "ibm_pi_instance" "testacc_ds_instance" {
34-
pi_instance_name="%s"
35-
pi_cloud_instance_id = "%s"
36-
}`, acc.Pi_instance_name, acc.Pi_cloud_instance_id)
34+
pi_cloud_instance_id = "%[1]s"
35+
pi_instance_id = "%[2]s"
36+
}`, acc.Pi_cloud_instance_id, acc.Pi_instance_id)
3737
}

0 commit comments

Comments
 (0)