Skip to content

Commit 649e48e

Browse files
Instance Template and Discrimater changes
1 parent de42bbd commit 649e48e

7 files changed

+95
-5
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,5 +244,5 @@ exclude (
244244
k8s.io/client-go v12.0.0+incompatible
245245
)
246246

247-
replace github.com/IBM/vpc-go-sdk v0.67.1 => ./common/github.com/IBM/vpc-go-sdk
247+
replace github.com/IBM/vpc-go-sdk v0.70.1 => ./common/github.com/IBM/vpc-go-sdk
248248

ibm/service/vpc/data_source_ibm_is_instance.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1479,7 +1479,9 @@ func instanceGetByName(context context.Context, d *schema.ResourceData, meta int
14791479
}
14801480

14811481
if instance.VolumeBandwidthQosMode != nil {
1482-
d.Set(isInstanceVolumeBandwidthQoSMode, string(*instance.VolumeBandwidthQosMode))
1482+
if err = d.Set(isInstanceVolumeBandwidthQoSMode, string(*instance.VolumeBandwidthQosMode)); err != nil {
1483+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting volume_bandwidth_qos_mode: %s", err), "(Data) ibm_is_instance", "read", "set-volume_bandwidth_qos_mode").GetDiag()
1484+
}
14831485
}
14841486

14851487
if instance.TotalNetworkBandwidth != nil {

ibm/service/vpc/data_source_ibm_is_instance_profile.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1021,7 +1021,7 @@ func instanceProfileGet(context context.Context, d *schema.ResourceData, meta in
10211021
if profile.VolumeBandwidthQosModes != nil {
10221022
err = d.Set("volume_bandwidth_qos_modes", dataSourceInstanceProfileFlattenVolumeBandwidthQoSMode(*profile.VolumeBandwidthQosModes.(*vpcv1.InstanceProfileVolumeBandwidthQoSModes)))
10231023
if err != nil {
1024-
return err
1024+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting volume_bandwidth_qos_modes: %s", err), "(Data) ibm_is_instance_profile", "read", "set-volume_bandwidth_qos_modes").GetDiag()
10251025
}
10261026
}
10271027
return nil

ibm/service/vpc/data_source_ibm_is_instance_template.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,11 @@ func DataSourceIBMISInstanceTemplate() *schema.Resource {
214214
Computed: true,
215215
Description: "The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes",
216216
},
217+
isInstanceVolumeBandwidthQoSMode: {
218+
Type: schema.TypeString,
219+
Computed: true,
220+
Description: "The volume bandwidth QoS mode for this virtual server instance.",
221+
},
217222
isInstanceDefaultTrustedProfileAutoLink: {
218223
Type: schema.TypeBool,
219224
Computed: true,
@@ -1226,6 +1231,12 @@ func dataSourceIBMISInstanceTemplateRead(context context.Context, d *schema.Reso
12261231
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting total_volume_bandwidth: %s", err), "(Data) ibm_is_instance_template", "read", "set-total_volume_bandwidth").GetDiag()
12271232
}
12281233
}
1234+
if instanceTemplate.VolumeBandwidthQosMode != nil {
1235+
d.Set(isInstanceVolumeBandwidthQoSMode, string(*instanceTemplate.VolumeBandwidthQosMode))
1236+
if err = d.Set(isInstanceVolumeBandwidthQoSMode, string(*instanceTemplate.VolumeBandwidthQosMode)); err != nil {
1237+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting volume_bandwidth_qos_mode: %s", err), "(Data) ibm_is_instance_template", "read", "set-volume_bandwidth_qos_mode").GetDiag()
1238+
}
1239+
}
12291240

12301241
if instanceTemplate.PrimaryNetworkInterface != nil {
12311242
interfaceList := make([]map[string]interface{}, 0)
@@ -1640,6 +1651,12 @@ func dataSourceIBMISInstanceTemplateRead(context context.Context, d *schema.Reso
16401651
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting total_volume_bandwidth: %s", err), "(Data) ibm_is_instance_template", "read", "set-total_volume_bandwidth").GetDiag()
16411652
}
16421653
}
1654+
if instanceTemplate.VolumeBandwidthQosMode != nil {
1655+
d.Set(isInstanceVolumeBandwidthQoSMode, string(*instanceTemplate.VolumeBandwidthQosMode))
1656+
if err = d.Set(isInstanceVolumeBandwidthQoSMode, string(*instanceTemplate.VolumeBandwidthQosMode)); err != nil {
1657+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting volume_bandwidth_qos_mode: %s", err), "(Data) ibm_is_instance_template", "read", "set-volume_bandwidth_qos_mode").GetDiag()
1658+
}
1659+
}
16431660

16441661
if instanceTemplate.PrimaryNetworkInterface != nil {
16451662
interfaceList := make([]map[string]interface{}, 0)
@@ -2165,6 +2182,12 @@ func dataSourceIBMISInstanceTemplateRead(context context.Context, d *schema.Reso
21652182
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting total_volume_bandwidth: %s", err), "(Data) ibm_is_instance_template", "read", "set-total_volume_bandwidth").GetDiag()
21662183
}
21672184
}
2185+
if instanceTemplate.VolumeBandwidthQosMode != nil {
2186+
d.Set(isInstanceVolumeBandwidthQoSMode, string(*instanceTemplate.VolumeBandwidthQosMode))
2187+
if err = d.Set(isInstanceVolumeBandwidthQoSMode, string(*instanceTemplate.VolumeBandwidthQosMode)); err != nil {
2188+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting volume_bandwidth_qos_mode: %s", err), "(Data) ibm_is_instance_template", "read", "set-volume_bandwidth_qos_mode").GetDiag()
2189+
}
2190+
}
21682191

21692192
if instanceTemplate.Image != nil {
21702193
imageInf := instanceTemplate.Image
@@ -2540,6 +2563,12 @@ func dataSourceIBMISInstanceTemplateRead(context context.Context, d *schema.Reso
25402563
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting total_volume_bandwidth: %s", err), "(Data) ibm_is_instance_template", "read", "set-total_volume_bandwidth").GetDiag()
25412564
}
25422565
}
2566+
if instanceTemplate.VolumeBandwidthQosMode != nil {
2567+
d.Set(isInstanceVolumeBandwidthQoSMode, string(*instanceTemplate.VolumeBandwidthQosMode))
2568+
if err = d.Set(isInstanceVolumeBandwidthQoSMode, string(*instanceTemplate.VolumeBandwidthQosMode)); err != nil {
2569+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting volume_bandwidth_qos_mode: %s", err), "(Data) ibm_is_instance_template", "read", "set-volume_bandwidth_qos_mode").GetDiag()
2570+
}
2571+
}
25432572

25442573
if instanceTemplate.VPC != nil {
25452574
vpcInf := instanceTemplate.VPC

ibm/service/vpc/data_source_ibm_is_instance_templates.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,11 @@ func DataSourceIBMISInstanceTemplates() *schema.Resource {
278278
Computed: true,
279279
Description: "The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes",
280280
},
281+
isInstanceVolumeBandwidthQoSMode: {
282+
Type: schema.TypeString,
283+
Computed: true,
284+
Description: "The volume bandwidth QoS mode for this virtual server instance.",
285+
},
281286
isInstanceDefaultTrustedProfileAutoLink: {
282287
Type: schema.TypeBool,
283288
Computed: true,
@@ -1177,6 +1182,10 @@ func dataSourceIBMISInstanceTemplatesRead(context context.Context, d *schema.Res
11771182
template[isInstanceTotalVolumeBandwidth] = int(*instance.TotalVolumeBandwidth)
11781183
}
11791184

1185+
if instance.VolumeBandwidthQosMode != nil {
1186+
template[isInstanceVolumeBandwidthQoSMode] = *instance.VolumeBandwidthQosMode
1187+
}
1188+
11801189
// vni
11811190

11821191
networkAttachments := []map[string]interface{}{}
@@ -1527,6 +1536,10 @@ func dataSourceIBMISInstanceTemplatesRead(context context.Context, d *schema.Res
15271536
template[isInstanceTotalVolumeBandwidth] = int(*instance.TotalVolumeBandwidth)
15281537
}
15291538

1539+
if instance.VolumeBandwidthQosMode != nil {
1540+
template[isInstanceVolumeBandwidthQoSMode] = *instance.VolumeBandwidthQosMode
1541+
}
1542+
15301543
// vni
15311544

15321545
networkAttachments := []map[string]interface{}{}

ibm/service/vpc/resource_ibm_is_instance.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5478,7 +5478,10 @@ func instanceGet(context context.Context, d *schema.ResourceData, meta interface
54785478
}
54795479
}
54805480
if instance.VolumeBandwidthQosMode != nil {
5481-
d.Set(isInstanceVolumeBandwidthQoSMode, string(*instance.VolumeBandwidthQosMode))
5481+
if err = d.Set(isInstanceVolumeBandwidthQoSMode, string(*instance.VolumeBandwidthQosMode)); err != nil {
5482+
err = fmt.Errorf("Error setting volume_bandwidth_qos_mode: %s", err)
5483+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_instance", "read", "set-volume_bandwidth_qos_mode").GetDiag()
5484+
}
54825485
}
54835486

54845487
if err = d.Set("memory", flex.IntValue(instance.Memory)); err != nil {

ibm/service/vpc/resource_ibm_is_instance_template.go

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,13 @@ func ResourceIBMISInstanceTemplate() *schema.Resource {
326326
ValidateFunc: validate.InvokeValidator("ibm_is_instance_template", isInstanceTotalVolumeBandwidth),
327327
Description: "The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes",
328328
},
329-
329+
isInstanceVolumeBandwidthQoSMode: {
330+
Type: schema.TypeString,
331+
Optional: true,
332+
ForceNew: true,
333+
ValidateFunc: validate.InvokeValidator("ibm_is_instance_template", isInstanceVolumeBandwidthQoSMode),
334+
Description: "The volume bandwidth QoS mode for this virtual server instance.",
335+
},
330336
isInstanceTemplateKeys: {
331337
Type: schema.TypeSet,
332338
Required: true,
@@ -1411,6 +1417,16 @@ func ResourceIBMISInstanceTemplateValidator() *validate.ResourceValidator {
14111417
Regexp: `^[A-Za-z0-9:_ .-]+$`,
14121418
MinValueLength: 1,
14131419
MaxValueLength: 128})
1420+
validateSchema = append(validateSchema, validate.ValidateSchema{
1421+
Identifier: isInstanceVolumeBandwidthQoSMode,
1422+
ValidateFunctionIdentifier: validate.ValidateAllowedStringValue,
1423+
Type: validate.TypeString,
1424+
Optional: true,
1425+
AllowedValues: "pooled, weighted",
1426+
Regexp: `^[a-z][a-z0-9]*(_[a-z0-9]+)*$`,
1427+
MinValueLength: 1,
1428+
MaxValueLength: 128,
1429+
})
14141430
ibmISInstanceTemplateValidator := validate.ResourceValidator{ResourceName: "ibm_is_instance_template", Schema: validateSchema}
14151431
return &ibmISInstanceTemplateValidator
14161432
}
@@ -1648,6 +1664,11 @@ func instanceTemplateCreateBySourceSnapshot(context context.Context, d *schema.R
16481664
instanceproto.TotalVolumeBandwidth = &totalVolBandwidthStr
16491665
}
16501666

1667+
if volumeBandwidthQoSModeIntf, ok := d.GetOk(isInstanceVolumeBandwidthQoSMode); ok {
1668+
volumeBandwidthQoSModeStr := volumeBandwidthQoSModeIntf.(string)
1669+
instanceproto.VolumeBandwidthQosMode = &volumeBandwidthQoSModeStr
1670+
}
1671+
16511672
// BOOT VOLUME ATTACHMENT for instance template
16521673
if boot, ok := d.GetOk(isInstanceTemplateBootVolume); ok {
16531674
bootvol := boot.([]interface{})[0].(map[string]interface{})
@@ -2207,6 +2228,11 @@ func instanceTemplateCreateByCatalogOffering(context context.Context, d *schema.
22072228
instanceproto.TotalVolumeBandwidth = &totalVolBandwidthStr
22082229
}
22092230

2231+
if volumeBandwidthQoSModeIntf, ok := d.GetOk(isInstanceVolumeBandwidthQoSMode); ok {
2232+
volumeBandwidthQoSModeStr := volumeBandwidthQoSModeIntf.(string)
2233+
instanceproto.VolumeBandwidthQosMode = &volumeBandwidthQoSModeStr
2234+
}
2235+
22102236
// BOOT VOLUME ATTACHMENT for instance template
22112237
if boot, ok := d.GetOk(isInstanceTemplateBootVolume); ok {
22122238
bootvol := boot.([]interface{})[0].(map[string]interface{})
@@ -2759,6 +2785,11 @@ func instanceTemplateCreate(context context.Context, d *schema.ResourceData, met
27592785
instanceproto.TotalVolumeBandwidth = &totalVolBandwidthStr
27602786
}
27612787

2788+
if volumeBandwidthQoSModeIntf, ok := d.GetOk(isInstanceVolumeBandwidthQoSMode); ok {
2789+
volumeBandwidthQoSModeStr := volumeBandwidthQoSModeIntf.(string)
2790+
instanceproto.VolumeBandwidthQosMode = &volumeBandwidthQoSModeStr
2791+
}
2792+
27622793
// BOOT VOLUME ATTACHMENT for instance template
27632794
if boot, ok := d.GetOk(isInstanceTemplateBootVolume); ok {
27642795
bootvol := boot.([]interface{})[0].(map[string]interface{})
@@ -3300,6 +3331,12 @@ func instanceTemplateGet(context context.Context, d *schema.ResourceData, meta i
33003331
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_instance_template", "read", "set-total_volume_bandwidth").GetDiag()
33013332
}
33023333
}
3334+
if instanceTemplate.VolumeBandwidthQosMode != nil {
3335+
if err = d.Set(isInstanceVolumeBandwidthQoSMode, string(*instanceTemplate.VolumeBandwidthQosMode)); err != nil {
3336+
err = fmt.Errorf("Error setting volume_bandwidth_qos_mode: %s", err)
3337+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_instance_template", "read", "set-volume_bandwidth_qos_mode").GetDiag()
3338+
}
3339+
}
33033340
if instanceTemplate.MetadataService != nil {
33043341
if err = d.Set(isInstanceTemplateMetadataServiceEnabled, instanceTemplate.MetadataService.Enabled); err != nil {
33053342
err = fmt.Errorf("Error setting metadata_service_enabled: %s", err)
@@ -3752,6 +3789,12 @@ func instanceTemplateGet(context context.Context, d *schema.ResourceData, meta i
37523789
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_instance_template", "read", "set-total_volume_bandwidth").GetDiag()
37533790
}
37543791
}
3792+
if instanceTemplate.VolumeBandwidthQosMode != nil {
3793+
if err = d.Set(isInstanceVolumeBandwidthQoSMode, string(*instanceTemplate.VolumeBandwidthQosMode)); err != nil {
3794+
err = fmt.Errorf("Error setting volume_bandwidth_qos_mode: %s", err)
3795+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_instance_template", "read", "set-volume_bandwidth_qos_mode").GetDiag()
3796+
}
3797+
}
37553798
if instanceTemplate.MetadataService != nil {
37563799
if err = d.Set(isInstanceTemplateMetadataServiceEnabled, instanceTemplate.MetadataService.Enabled); err != nil {
37573800
err = fmt.Errorf("Error setting metadata_service_enabled: %s", err)

0 commit comments

Comments
 (0)