@@ -471,6 +471,84 @@ Please refer to the field 'effective_labels' for all of the labels present on th
471471 MaxItems : 1 ,
472472 Elem : & schema.Resource {
473473 Schema : map [string ]* schema.Schema {
474+ "clusterupgrade" : {
475+ Type : schema .TypeList ,
476+ Optional : true ,
477+ Description : `Clusterupgrade feature spec.` ,
478+ MaxItems : 1 ,
479+ Elem : & schema.Resource {
480+ Schema : map [string ]* schema.Schema {
481+ "post_conditions" : {
482+ Type : schema .TypeList ,
483+ Computed : true ,
484+ Optional : true ,
485+ Description : `Post conditions to override for the specified upgrade.` ,
486+ MaxItems : 1 ,
487+ Elem : & schema.Resource {
488+ Schema : map [string ]* schema.Schema {
489+ "soaking" : {
490+ Type : schema .TypeString ,
491+ Required : true ,
492+ Description : `Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days.` ,
493+ },
494+ },
495+ },
496+ },
497+ "upstream_fleets" : {
498+ Type : schema .TypeList ,
499+ Required : true ,
500+ Description : `Specified if other fleet should be considered as a source of upgrades. Currently, at most one upstream fleet is allowed. The fleet name should be either fleet project number or id.` ,
501+ Elem : & schema.Schema {
502+ Type : schema .TypeString ,
503+ },
504+ },
505+ "gke_upgrade_overrides" : {
506+ Type : schema .TypeList ,
507+ Optional : true ,
508+ Description : `Configuration overrides for individual upgrades.` ,
509+ Elem : & schema.Resource {
510+ Schema : map [string ]* schema.Schema {
511+ "post_conditions" : {
512+ Type : schema .TypeList ,
513+ Required : true ,
514+ Description : `Post conditions to override for the specified upgrade.` ,
515+ MaxItems : 1 ,
516+ Elem : & schema.Resource {
517+ Schema : map [string ]* schema.Schema {
518+ "soaking" : {
519+ Type : schema .TypeString ,
520+ Required : true ,
521+ Description : `Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days.` ,
522+ },
523+ },
524+ },
525+ },
526+ "upgrade" : {
527+ Type : schema .TypeList ,
528+ Required : true ,
529+ Description : `Which upgrade to override.` ,
530+ MaxItems : 1 ,
531+ Elem : & schema.Resource {
532+ Schema : map [string ]* schema.Schema {
533+ "name" : {
534+ Type : schema .TypeString ,
535+ Required : true ,
536+ Description : `Name of the upgrade, e.g., "k8s_control_plane". It should be a valid upgrade name. It must not exceet 99 characters.` ,
537+ },
538+ "version" : {
539+ Type : schema .TypeString ,
540+ Required : true ,
541+ Description : `Version of the upgrade, e.g., "1.22.1-gke.100". It should be a valid version. It must not exceet 99 characters.` ,
542+ },
543+ },
544+ },
545+ },
546+ },
547+ },
548+ },
549+ },
550+ },
551+ },
474552 "fleetobservability" : {
475553 Type : schema .TypeList ,
476554 Optional : true ,
@@ -1017,6 +1095,8 @@ func flattenGKEHub2FeatureSpec(v interface{}, d *schema.ResourceData, config *tr
10171095 flattenGKEHub2FeatureSpecMulticlusteringress (original ["multiclusteringress" ], d , config )
10181096 transformed ["fleetobservability" ] =
10191097 flattenGKEHub2FeatureSpecFleetobservability (original ["fleetobservability" ], d , config )
1098+ transformed ["clusterupgrade" ] =
1099+ flattenGKEHub2FeatureSpecClusterupgrade (original ["clusterupgrade" ], d , config )
10201100 return []interface {}{transformed }
10211101}
10221102func flattenGKEHub2FeatureSpecMulticlusteringress (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
@@ -1098,6 +1178,103 @@ func flattenGKEHub2FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfi
10981178 return v
10991179}
11001180
1181+ func flattenGKEHub2FeatureSpecClusterupgrade (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1182+ if v == nil {
1183+ return nil
1184+ }
1185+ original := v .(map [string ]interface {})
1186+ if len (original ) == 0 {
1187+ return nil
1188+ }
1189+ transformed := make (map [string ]interface {})
1190+ transformed ["upstream_fleets" ] =
1191+ flattenGKEHub2FeatureSpecClusterupgradeUpstreamFleets (original ["upstreamFleets" ], d , config )
1192+ transformed ["post_conditions" ] =
1193+ flattenGKEHub2FeatureSpecClusterupgradePostConditions (original ["postConditions" ], d , config )
1194+ transformed ["gke_upgrade_overrides" ] =
1195+ flattenGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverrides (original ["gkeUpgradeOverrides" ], d , config )
1196+ return []interface {}{transformed }
1197+ }
1198+ func flattenGKEHub2FeatureSpecClusterupgradeUpstreamFleets (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1199+ return v
1200+ }
1201+
1202+ func flattenGKEHub2FeatureSpecClusterupgradePostConditions (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1203+ if v == nil {
1204+ return nil
1205+ }
1206+ original := v .(map [string ]interface {})
1207+ if len (original ) == 0 {
1208+ return nil
1209+ }
1210+ transformed := make (map [string ]interface {})
1211+ transformed ["soaking" ] =
1212+ flattenGKEHub2FeatureSpecClusterupgradePostConditionsSoaking (original ["soaking" ], d , config )
1213+ return []interface {}{transformed }
1214+ }
1215+ func flattenGKEHub2FeatureSpecClusterupgradePostConditionsSoaking (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1216+ return v
1217+ }
1218+
1219+ func flattenGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverrides (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1220+ if v == nil {
1221+ return v
1222+ }
1223+ l := v .([]interface {})
1224+ transformed := make ([]interface {}, 0 , len (l ))
1225+ for _ , raw := range l {
1226+ original := raw .(map [string ]interface {})
1227+ if len (original ) < 1 {
1228+ // Do not include empty json objects coming back from the api
1229+ continue
1230+ }
1231+ transformed = append (transformed , map [string ]interface {}{
1232+ "upgrade" : flattenGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesUpgrade (original ["upgrade" ], d , config ),
1233+ "post_conditions" : flattenGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesPostConditions (original ["postConditions" ], d , config ),
1234+ })
1235+ }
1236+ return transformed
1237+ }
1238+ func flattenGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesUpgrade (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1239+ if v == nil {
1240+ return nil
1241+ }
1242+ original := v .(map [string ]interface {})
1243+ if len (original ) == 0 {
1244+ return nil
1245+ }
1246+ transformed := make (map [string ]interface {})
1247+ transformed ["name" ] =
1248+ flattenGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesUpgradeName (original ["name" ], d , config )
1249+ transformed ["version" ] =
1250+ flattenGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesUpgradeVersion (original ["version" ], d , config )
1251+ return []interface {}{transformed }
1252+ }
1253+ func flattenGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesUpgradeName (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1254+ return v
1255+ }
1256+
1257+ func flattenGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesUpgradeVersion (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1258+ return v
1259+ }
1260+
1261+ func flattenGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesPostConditions (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1262+ if v == nil {
1263+ return nil
1264+ }
1265+ original := v .(map [string ]interface {})
1266+ if len (original ) == 0 {
1267+ return nil
1268+ }
1269+ transformed := make (map [string ]interface {})
1270+ transformed ["soaking" ] =
1271+ flattenGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesPostConditionsSoaking (original ["soaking" ], d , config )
1272+ return []interface {}{transformed }
1273+ }
1274+ func flattenGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesPostConditionsSoaking (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1275+ return v
1276+ }
1277+
11011278func flattenGKEHub2FeatureFleetDefaultMemberConfig (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
11021279 if v == nil {
11031280 return nil
@@ -1683,6 +1860,13 @@ func expandGKEHub2FeatureSpec(v interface{}, d tpgresource.TerraformResourceData
16831860 transformed ["fleetobservability" ] = transformedFleetobservability
16841861 }
16851862
1863+ transformedClusterupgrade , err := expandGKEHub2FeatureSpecClusterupgrade (original ["clusterupgrade" ], d , config )
1864+ if err != nil {
1865+ return nil , err
1866+ } else if val := reflect .ValueOf (transformedClusterupgrade ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1867+ transformed ["clusterupgrade" ] = transformedClusterupgrade
1868+ }
1869+
16861870 return transformed , nil
16871871}
16881872
@@ -1800,6 +1984,152 @@ func expandGKEHub2FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig
18001984 return v , nil
18011985}
18021986
1987+ func expandGKEHub2FeatureSpecClusterupgrade (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1988+ l := v .([]interface {})
1989+ if len (l ) == 0 || l [0 ] == nil {
1990+ return nil , nil
1991+ }
1992+ raw := l [0 ]
1993+ original := raw .(map [string ]interface {})
1994+ transformed := make (map [string ]interface {})
1995+
1996+ transformedUpstreamFleets , err := expandGKEHub2FeatureSpecClusterupgradeUpstreamFleets (original ["upstream_fleets" ], d , config )
1997+ if err != nil {
1998+ return nil , err
1999+ } else if val := reflect .ValueOf (transformedUpstreamFleets ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2000+ transformed ["upstreamFleets" ] = transformedUpstreamFleets
2001+ }
2002+
2003+ transformedPostConditions , err := expandGKEHub2FeatureSpecClusterupgradePostConditions (original ["post_conditions" ], d , config )
2004+ if err != nil {
2005+ return nil , err
2006+ } else if val := reflect .ValueOf (transformedPostConditions ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2007+ transformed ["postConditions" ] = transformedPostConditions
2008+ }
2009+
2010+ transformedGkeUpgradeOverrides , err := expandGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverrides (original ["gke_upgrade_overrides" ], d , config )
2011+ if err != nil {
2012+ return nil , err
2013+ } else if val := reflect .ValueOf (transformedGkeUpgradeOverrides ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2014+ transformed ["gkeUpgradeOverrides" ] = transformedGkeUpgradeOverrides
2015+ }
2016+
2017+ return transformed , nil
2018+ }
2019+
2020+ func expandGKEHub2FeatureSpecClusterupgradeUpstreamFleets (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2021+ return v , nil
2022+ }
2023+
2024+ func expandGKEHub2FeatureSpecClusterupgradePostConditions (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2025+ l := v .([]interface {})
2026+ if len (l ) == 0 || l [0 ] == nil {
2027+ return nil , nil
2028+ }
2029+ raw := l [0 ]
2030+ original := raw .(map [string ]interface {})
2031+ transformed := make (map [string ]interface {})
2032+
2033+ transformedSoaking , err := expandGKEHub2FeatureSpecClusterupgradePostConditionsSoaking (original ["soaking" ], d , config )
2034+ if err != nil {
2035+ return nil , err
2036+ } else if val := reflect .ValueOf (transformedSoaking ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2037+ transformed ["soaking" ] = transformedSoaking
2038+ }
2039+
2040+ return transformed , nil
2041+ }
2042+
2043+ func expandGKEHub2FeatureSpecClusterupgradePostConditionsSoaking (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2044+ return v , nil
2045+ }
2046+
2047+ func expandGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverrides (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2048+ l := v .([]interface {})
2049+ req := make ([]interface {}, 0 , len (l ))
2050+ for _ , raw := range l {
2051+ if raw == nil {
2052+ continue
2053+ }
2054+ original := raw .(map [string ]interface {})
2055+ transformed := make (map [string ]interface {})
2056+
2057+ transformedUpgrade , err := expandGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesUpgrade (original ["upgrade" ], d , config )
2058+ if err != nil {
2059+ return nil , err
2060+ } else if val := reflect .ValueOf (transformedUpgrade ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2061+ transformed ["upgrade" ] = transformedUpgrade
2062+ }
2063+
2064+ transformedPostConditions , err := expandGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesPostConditions (original ["post_conditions" ], d , config )
2065+ if err != nil {
2066+ return nil , err
2067+ } else if val := reflect .ValueOf (transformedPostConditions ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2068+ transformed ["postConditions" ] = transformedPostConditions
2069+ }
2070+
2071+ req = append (req , transformed )
2072+ }
2073+ return req , nil
2074+ }
2075+
2076+ func expandGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesUpgrade (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2077+ l := v .([]interface {})
2078+ if len (l ) == 0 || l [0 ] == nil {
2079+ return nil , nil
2080+ }
2081+ raw := l [0 ]
2082+ original := raw .(map [string ]interface {})
2083+ transformed := make (map [string ]interface {})
2084+
2085+ transformedName , err := expandGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesUpgradeName (original ["name" ], d , config )
2086+ if err != nil {
2087+ return nil , err
2088+ } else if val := reflect .ValueOf (transformedName ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2089+ transformed ["name" ] = transformedName
2090+ }
2091+
2092+ transformedVersion , err := expandGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesUpgradeVersion (original ["version" ], d , config )
2093+ if err != nil {
2094+ return nil , err
2095+ } else if val := reflect .ValueOf (transformedVersion ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2096+ transformed ["version" ] = transformedVersion
2097+ }
2098+
2099+ return transformed , nil
2100+ }
2101+
2102+ func expandGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesUpgradeName (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2103+ return v , nil
2104+ }
2105+
2106+ func expandGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesUpgradeVersion (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2107+ return v , nil
2108+ }
2109+
2110+ func expandGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesPostConditions (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2111+ l := v .([]interface {})
2112+ if len (l ) == 0 || l [0 ] == nil {
2113+ return nil , nil
2114+ }
2115+ raw := l [0 ]
2116+ original := raw .(map [string ]interface {})
2117+ transformed := make (map [string ]interface {})
2118+
2119+ transformedSoaking , err := expandGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesPostConditionsSoaking (original ["soaking" ], d , config )
2120+ if err != nil {
2121+ return nil , err
2122+ } else if val := reflect .ValueOf (transformedSoaking ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2123+ transformed ["soaking" ] = transformedSoaking
2124+ }
2125+
2126+ return transformed , nil
2127+ }
2128+
2129+ func expandGKEHub2FeatureSpecClusterupgradeGkeUpgradeOverridesPostConditionsSoaking (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2130+ return v , nil
2131+ }
2132+
18032133func expandGKEHub2FeatureFleetDefaultMemberConfig (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
18042134 l := v .([]interface {})
18052135 if len (l ) == 0 || l [0 ] == nil {
0 commit comments