@@ -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