@@ -2252,6 +2252,21 @@ func ResourceContainerCluster() *schema.Resource {
22522252 Description : `Defines the config of in-transit encryption` ,
22532253 ValidateFunc : validation .StringInSlice ([]string {"IN_TRANSIT_ENCRYPTION_CONFIG_UNSPECIFIED" , "IN_TRANSIT_ENCRYPTION_DISABLED" , "IN_TRANSIT_ENCRYPTION_INTER_NODE_TRANSPARENT" }, false ),
22542254 },
2255+ "network_performance_config" : {
2256+ Type : schema .TypeList ,
2257+ Optional : true ,
2258+ MaxItems : 1 ,
2259+ Description : `Network bandwidth tier configuration.` ,
2260+ Elem : & schema.Resource {
2261+ Schema : map [string ]* schema.Schema {
2262+ "total_egress_bandwidth_tier" : {
2263+ Type : schema .TypeString ,
2264+ Required : true ,
2265+ Description : `Specifies the total network bandwidth tier for NodePools in the cluster.` ,
2266+ },
2267+ },
2268+ },
2269+ },
22552270 },
22562271 }
22572272}
@@ -2412,6 +2427,7 @@ func resourceContainerClusterCreate(d *schema.ResourceData, meta interface{}) er
24122427 EnableMultiNetworking : d .Get ("enable_multi_networking" ).(bool ),
24132428 DefaultEnablePrivateNodes : expandDefaultEnablePrivateNodes (d ),
24142429 EnableFqdnNetworkPolicy : d .Get ("enable_fqdn_network_policy" ).(bool ),
2430+ NetworkPerformanceConfig : expandNetworkPerformanceConfig (d .Get ("network_performance_config" )),
24152431 },
24162432 MasterAuth : expandMasterAuth (d .Get ("master_auth" )),
24172433 NotificationConfig : expandNotificationConfig (d .Get ("notification_config" )),
@@ -3078,6 +3094,9 @@ func resourceContainerClusterRead(d *schema.ResourceData, meta interface{}) erro
30783094 if err := d .Set ("gateway_api_config" , flattenGatewayApiConfig (cluster .NetworkConfig .GatewayApiConfig )); err != nil {
30793095 return err
30803096 }
3097+ if err := d .Set ("network_performance_config" , flattenNetworkPerformanceConfig (cluster .NetworkConfig .NetworkPerformanceConfig )); err != nil {
3098+ return err
3099+ }
30813100 if err := d .Set ("fleet" , flattenFleet (cluster .Fleet )); err != nil {
30823101 return err
30833102 }
@@ -4284,6 +4303,24 @@ func resourceContainerClusterUpdate(d *schema.ResourceData, meta interface{}) er
42844303 log .Printf ("[INFO] GKE cluster %s resource usage export config has been updated" , d .Id ())
42854304 }
42864305
4306+ if d .HasChange ("network_performance_config" ) {
4307+ if npc , ok := d .GetOk ("network_performance_config" ); ok {
4308+ req := & container.UpdateClusterRequest {
4309+ Update : & container.ClusterUpdate {
4310+ DesiredNetworkPerformanceConfig : expandNetworkPerformanceConfig (npc ),
4311+ },
4312+ }
4313+
4314+ updateF := updateFunc (req , "updating GKE Network Performance Config" )
4315+ // Call update serially.
4316+ if err := transport_tpg .LockedCall (lockKey , updateF ); err != nil {
4317+ return err
4318+ }
4319+
4320+ log .Printf ("[INFO] GKE cluster %s Network Performance Config has been updated" , d .Id ())
4321+ }
4322+ }
4323+
42874324 if d .HasChange ("gateway_api_config" ) {
42884325 if gac , ok := d .GetOk ("gateway_api_config" ); ok {
42894326 req := & container.UpdateClusterRequest {
@@ -5629,6 +5666,18 @@ func expandDnsConfig(configured interface{}) *container.DNSConfig {
56295666 }
56305667}
56315668
5669+ func expandNetworkPerformanceConfig (configured interface {}) * container.ClusterNetworkPerformanceConfig {
5670+ l := configured .([]interface {})
5671+ if len (l ) == 0 || l [0 ] == nil {
5672+ return nil
5673+ }
5674+
5675+ config := l [0 ].(map [string ]interface {})
5676+ return & container.ClusterNetworkPerformanceConfig {
5677+ TotalEgressBandwidthTier : config ["total_egress_bandwidth_tier" ].(string ),
5678+ }
5679+ }
5680+
56325681func expandGatewayApiConfig (configured interface {}) * container.GatewayAPIConfig {
56335682 l := configured .([]interface {})
56345683 if len (l ) == 0 || l [0 ] == nil {
@@ -6548,6 +6597,17 @@ func flattenDnsConfig(c *container.DNSConfig) []map[string]interface{} {
65486597 }
65496598}
65506599
6600+ func flattenNetworkPerformanceConfig (c * container.ClusterNetworkPerformanceConfig ) []map [string ]interface {} {
6601+ if c == nil {
6602+ return nil
6603+ }
6604+ return []map [string ]interface {}{
6605+ {
6606+ "total_egress_bandwidth_tier" : c .TotalEgressBandwidthTier ,
6607+ },
6608+ }
6609+ }
6610+
65516611func flattenGatewayApiConfig (c * container.GatewayAPIConfig ) []map [string ]interface {} {
65526612 if c == nil {
65536613 return nil
0 commit comments