@@ -135,6 +135,13 @@ Please refer to the field 'effective_labels' for all of the labels present on th
135135 ForceNew : true ,
136136 Description : `When enabled, the volumes uses Active Directory as LDAP name service for UID/GID lookups. Required to enable extended group support for NFSv3,
137137using security identifiers for NFSv4.1 or principal names for kerberized NFSv4.1.` ,
138+ },
139+ "qos_type" : {
140+ Type : schema .TypeString ,
141+ Optional : true ,
142+ ValidateFunc : verify .ValidateEnum ([]string {"QOS_TYPE_UNSPECIFIED" , "AUTO" , "MANUAL" , "" }),
143+ Description : `QoS (Quality of Service) type of the storage pool.
144+ Possible values are: AUTO, MANUAL. Possible values: ["QOS_TYPE_UNSPECIFIED", "AUTO", "MANUAL"]` ,
138145 },
139146 "replica_zone" : {
140147 Type : schema .TypeString ,
@@ -149,6 +156,7 @@ using security identifiers for NFSv4.1 or principal names for kerberized NFSv4.1
149156 },
150157 "total_throughput_mibps" : {
151158 Type : schema .TypeString ,
159+ Computed : true ,
152160 Optional : true ,
153161 Description : `Optional. Custom Performance Total Throughput of the pool (in MiB/s).` ,
154162 },
@@ -160,6 +168,11 @@ using security identifiers for NFSv4.1 or principal names for kerberized NFSv4.1
160168[zone switch](https://cloud.google.com/netapp/volumes/docs/configure-and-use/storage-pools/edit-or-delete-storage-pool#switch_active_and_replica_zones).
161169If you want to create a zonal Flex pool, specify a zone name for 'location' and omit 'zone'.` ,
162170 },
171+ "available_throughput_mibps" : {
172+ Type : schema .TypeFloat ,
173+ Computed : true ,
174+ Description : `Available throughput of the storage pool (in MiB/s).` ,
175+ },
163176 "effective_labels" : {
164177 Type : schema .TypeMap ,
165178 Computed : true ,
@@ -285,6 +298,12 @@ func resourceNetappStoragePoolCreate(d *schema.ResourceData, meta interface{}) e
285298 } else if v , ok := d .GetOkExists ("total_iops" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (totalIopsProp )) && (ok || ! reflect .DeepEqual (v , totalIopsProp )) {
286299 obj ["totalIops" ] = totalIopsProp
287300 }
301+ qosTypeProp , err := expandNetappStoragePoolQosType (d .Get ("qos_type" ), d , config )
302+ if err != nil {
303+ return err
304+ } else if v , ok := d .GetOkExists ("qos_type" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (qosTypeProp )) && (ok || ! reflect .DeepEqual (v , qosTypeProp )) {
305+ obj ["qosType" ] = qosTypeProp
306+ }
288307 effectiveLabelsProp , err := expandNetappStoragePoolEffectiveLabels (d .Get ("effective_labels" ), d , config )
289308 if err != nil {
290309 return err
@@ -441,6 +460,12 @@ func resourceNetappStoragePoolRead(d *schema.ResourceData, meta interface{}) err
441460 if err := d .Set ("total_iops" , flattenNetappStoragePoolTotalIops (res ["totalIops" ], d , config )); err != nil {
442461 return fmt .Errorf ("Error reading StoragePool: %s" , err )
443462 }
463+ if err := d .Set ("qos_type" , flattenNetappStoragePoolQosType (res ["qosType" ], d , config )); err != nil {
464+ return fmt .Errorf ("Error reading StoragePool: %s" , err )
465+ }
466+ if err := d .Set ("available_throughput_mibps" , flattenNetappStoragePoolAvailableThroughputMibps (res ["availableThroughputMibps" ], d , config )); err != nil {
467+ return fmt .Errorf ("Error reading StoragePool: %s" , err )
468+ }
444469 if err := d .Set ("terraform_labels" , flattenNetappStoragePoolTerraformLabels (res ["labels" ], d , config )); err != nil {
445470 return fmt .Errorf ("Error reading StoragePool: %s" , err )
446471 }
@@ -515,6 +540,12 @@ func resourceNetappStoragePoolUpdate(d *schema.ResourceData, meta interface{}) e
515540 } else if v , ok := d .GetOkExists ("total_iops" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (v )) && (ok || ! reflect .DeepEqual (v , totalIopsProp )) {
516541 obj ["totalIops" ] = totalIopsProp
517542 }
543+ qosTypeProp , err := expandNetappStoragePoolQosType (d .Get ("qos_type" ), d , config )
544+ if err != nil {
545+ return err
546+ } else if v , ok := d .GetOkExists ("qos_type" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (v )) && (ok || ! reflect .DeepEqual (v , qosTypeProp )) {
547+ obj ["qosType" ] = qosTypeProp
548+ }
518549 effectiveLabelsProp , err := expandNetappStoragePoolEffectiveLabels (d .Get ("effective_labels" ), d , config )
519550 if err != nil {
520551 return err
@@ -563,6 +594,10 @@ func resourceNetappStoragePoolUpdate(d *schema.ResourceData, meta interface{}) e
563594 updateMask = append (updateMask , "totalIops" )
564595 }
565596
597+ if d .HasChange ("qos_type" ) {
598+ updateMask = append (updateMask , "qosType" )
599+ }
600+
566601 if d .HasChange ("effective_labels" ) {
567602 updateMask = append (updateMask , "labels" )
568603 }
@@ -842,6 +877,14 @@ func flattenNetappStoragePoolTotalIops(v interface{}, d *schema.ResourceData, co
842877 return v
843878}
844879
880+ func flattenNetappStoragePoolQosType (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
881+ return v
882+ }
883+
884+ func flattenNetappStoragePoolAvailableThroughputMibps (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
885+ return v
886+ }
887+
845888func flattenNetappStoragePoolTerraformLabels (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
846889 if v == nil {
847890 return v
@@ -913,6 +956,10 @@ func expandNetappStoragePoolTotalIops(v interface{}, d tpgresource.TerraformReso
913956 return v , nil
914957}
915958
959+ func expandNetappStoragePoolQosType (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
960+ return v , nil
961+ }
962+
916963func expandNetappStoragePoolEffectiveLabels (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (map [string ]string , error ) {
917964 if v == nil {
918965 return map [string ]string {}, nil
0 commit comments