@@ -2422,6 +2422,21 @@ func ResourceContainerCluster() *schema.Resource {
24222422 Description : `Defines the config of in-transit encryption` ,
24232423 ValidateFunc : validation .StringInSlice ([]string {"IN_TRANSIT_ENCRYPTION_CONFIG_UNSPECIFIED" , "IN_TRANSIT_ENCRYPTION_DISABLED" , "IN_TRANSIT_ENCRYPTION_INTER_NODE_TRANSPARENT" }, false ),
24242424 },
2425+ "network_performance_config" : {
2426+ Type : schema .TypeList ,
2427+ Optional : true ,
2428+ MaxItems : 1 ,
2429+ Description : `Network bandwidth tier configuration.` ,
2430+ Elem : & schema.Resource {
2431+ Schema : map [string ]* schema.Schema {
2432+ "total_egress_bandwidth_tier" : {
2433+ Type : schema .TypeString ,
2434+ Required : true ,
2435+ Description : `Specifies the total network bandwidth tier for NodePools in the cluster.` ,
2436+ },
2437+ },
2438+ },
2439+ },
24252440 },
24262441 }
24272442}
@@ -2584,6 +2599,7 @@ func resourceContainerClusterCreate(d *schema.ResourceData, meta interface{}) er
25842599 EnableMultiNetworking : d .Get ("enable_multi_networking" ).(bool ),
25852600 DefaultEnablePrivateNodes : expandDefaultEnablePrivateNodes (d ),
25862601 EnableFqdnNetworkPolicy : d .Get ("enable_fqdn_network_policy" ).(bool ),
2602+ NetworkPerformanceConfig : expandNetworkPerformanceConfig (d .Get ("network_performance_config" )),
25872603 },
25882604 MasterAuth : expandMasterAuth (d .Get ("master_auth" )),
25892605 NotificationConfig : expandNotificationConfig (d .Get ("notification_config" )),
@@ -3266,6 +3282,9 @@ func resourceContainerClusterRead(d *schema.ResourceData, meta interface{}) erro
32663282 if err := d .Set ("gateway_api_config" , flattenGatewayApiConfig (cluster .NetworkConfig .GatewayApiConfig )); err != nil {
32673283 return err
32683284 }
3285+ if err := d .Set ("network_performance_config" , flattenNetworkPerformanceConfig (cluster .NetworkConfig .NetworkPerformanceConfig )); err != nil {
3286+ return err
3287+ }
32693288 if err := d .Set ("fleet" , flattenFleet (cluster .Fleet )); err != nil {
32703289 return err
32713290 }
@@ -4507,6 +4526,24 @@ func resourceContainerClusterUpdate(d *schema.ResourceData, meta interface{}) er
45074526 log .Printf ("[INFO] GKE cluster %s resource usage export config has been updated" , d .Id ())
45084527 }
45094528
4529+ if d .HasChange ("network_performance_config" ) {
4530+ if npc , ok := d .GetOk ("network_performance_config" ); ok {
4531+ req := & container.UpdateClusterRequest {
4532+ Update : & container.ClusterUpdate {
4533+ DesiredNetworkPerformanceConfig : expandNetworkPerformanceConfig (npc ),
4534+ },
4535+ }
4536+
4537+ updateF := updateFunc (req , "updating GKE Network Performance Config" )
4538+ // Call update serially.
4539+ if err := transport_tpg .LockedCall (lockKey , updateF ); err != nil {
4540+ return err
4541+ }
4542+
4543+ log .Printf ("[INFO] GKE cluster %s Network Performance Config has been updated" , d .Id ())
4544+ }
4545+ }
4546+
45104547 if d .HasChange ("gateway_api_config" ) {
45114548 if gac , ok := d .GetOk ("gateway_api_config" ); ok {
45124549 req := & container.UpdateClusterRequest {
@@ -6001,6 +6038,18 @@ func expandDnsConfig(configured interface{}) *container.DNSConfig {
60016038 }
60026039}
60036040
6041+ func expandNetworkPerformanceConfig (configured interface {}) * container.ClusterNetworkPerformanceConfig {
6042+ l := configured .([]interface {})
6043+ if len (l ) == 0 || l [0 ] == nil {
6044+ return nil
6045+ }
6046+
6047+ config := l [0 ].(map [string ]interface {})
6048+ return & container.ClusterNetworkPerformanceConfig {
6049+ TotalEgressBandwidthTier : config ["total_egress_bandwidth_tier" ].(string ),
6050+ }
6051+ }
6052+
60046053func expandGatewayApiConfig (configured interface {}) * container.GatewayAPIConfig {
60056054 l := configured .([]interface {})
60066055 if len (l ) == 0 || l [0 ] == nil {
@@ -6988,6 +7037,17 @@ func flattenDnsConfig(c *container.DNSConfig) []map[string]interface{} {
69887037 }
69897038}
69907039
7040+ func flattenNetworkPerformanceConfig (c * container.ClusterNetworkPerformanceConfig ) []map [string ]interface {} {
7041+ if c == nil {
7042+ return nil
7043+ }
7044+ return []map [string ]interface {}{
7045+ {
7046+ "total_egress_bandwidth_tier" : c .TotalEgressBandwidthTier ,
7047+ },
7048+ }
7049+ }
7050+
69917051func flattenGatewayApiConfig (c * container.GatewayAPIConfig ) []map [string ]interface {} {
69927052 if c == nil {
69937053 return nil
0 commit comments