@@ -263,6 +263,44 @@ Updating 'source_snapshot' will update content in the ephemeral directory after
263263 },
264264 },
265265 },
266+ "boost_configs" : {
267+ Type : schema .TypeList ,
268+ Optional : true ,
269+ Description : `A list of the boost configurations that workstations created using this workstation configuration are allowed to use.` ,
270+ Elem : & schema.Resource {
271+ Schema : map [string ]* schema.Schema {
272+ "id" : {
273+ Type : schema .TypeString ,
274+ Required : true ,
275+ Description : `The id to be used for the boost config.` ,
276+ },
277+ "accelerators" : {
278+ Type : schema .TypeList ,
279+ Optional : true ,
280+ Description : `An accelerator card attached to the boost instance.` ,
281+ Elem : & schema.Resource {
282+ Schema : map [string ]* schema.Schema {
283+ "count" : {
284+ Type : schema .TypeInt ,
285+ Required : true ,
286+ Description : `Number of accelerator cards exposed to the instance.` ,
287+ },
288+ "type" : {
289+ Type : schema .TypeString ,
290+ Required : true ,
291+ Description : `Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".` ,
292+ },
293+ },
294+ },
295+ },
296+ "machine_type" : {
297+ Type : schema .TypeString ,
298+ Optional : true ,
299+ Description : `The type of machine that boosted VM instances will use—for example, e2-standard-4. For more information about machine types that Cloud Workstations supports, see the list of available machine types https://cloud.google.com/workstations/docs/available-machine-types. Defaults to e2-standard-4.` ,
300+ },
301+ },
302+ },
303+ },
266304 "boot_disk_size_gb" : {
267305 Type : schema .TypeInt ,
268306 Computed : true ,
@@ -966,6 +1004,7 @@ func resourceWorkstationsWorkstationConfigUpdate(d *schema.ResourceData, meta in
9661004 "host.gceInstance.shieldedInstanceConfig.enableIntegrityMonitoring" ,
9671005 "host.gceInstance.confidentialInstanceConfig.enableConfidentialCompute" ,
9681006 "host.gceInstance.accelerators" ,
1007+ "host.gceInstance.boostConfigs" ,
9691008 "host.gceInstance.disableSsh" )
9701009 }
9711010
@@ -1224,6 +1263,8 @@ func flattenWorkstationsWorkstationConfigHostGceInstance(v interface{}, d *schem
12241263 flattenWorkstationsWorkstationConfigHostGceInstanceConfidentialInstanceConfig (original ["confidentialInstanceConfig" ], d , config )
12251264 transformed ["accelerators" ] =
12261265 flattenWorkstationsWorkstationConfigHostGceInstanceAccelerators (original ["accelerators" ], d , config )
1266+ transformed ["boost_configs" ] =
1267+ flattenWorkstationsWorkstationConfigHostGceInstanceBoostConfigs (original ["boostConfigs" ], d , config )
12271268 return []interface {}{transformed }
12281269}
12291270func flattenWorkstationsWorkstationConfigHostGceInstanceMachineType (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
@@ -1372,6 +1413,74 @@ func flattenWorkstationsWorkstationConfigHostGceInstanceAcceleratorsCount(v inte
13721413 return v // let terraform core handle it otherwise
13731414}
13741415
1416+ func flattenWorkstationsWorkstationConfigHostGceInstanceBoostConfigs (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1417+ if v == nil {
1418+ return v
1419+ }
1420+ l := v .([]interface {})
1421+ transformed := make ([]interface {}, 0 , len (l ))
1422+ for _ , raw := range l {
1423+ original := raw .(map [string ]interface {})
1424+ if len (original ) < 1 {
1425+ // Do not include empty json objects coming back from the api
1426+ continue
1427+ }
1428+ transformed = append (transformed , map [string ]interface {}{
1429+ "id" : flattenWorkstationsWorkstationConfigHostGceInstanceBoostConfigsId (original ["id" ], d , config ),
1430+ "machine_type" : flattenWorkstationsWorkstationConfigHostGceInstanceBoostConfigsMachineType (original ["machineType" ], d , config ),
1431+ "accelerators" : flattenWorkstationsWorkstationConfigHostGceInstanceBoostConfigsAccelerators (original ["accelerators" ], d , config ),
1432+ })
1433+ }
1434+ return transformed
1435+ }
1436+ func flattenWorkstationsWorkstationConfigHostGceInstanceBoostConfigsId (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1437+ return v
1438+ }
1439+
1440+ func flattenWorkstationsWorkstationConfigHostGceInstanceBoostConfigsMachineType (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1441+ return v
1442+ }
1443+
1444+ func flattenWorkstationsWorkstationConfigHostGceInstanceBoostConfigsAccelerators (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1445+ if v == nil {
1446+ return v
1447+ }
1448+ l := v .([]interface {})
1449+ transformed := make ([]interface {}, 0 , len (l ))
1450+ for _ , raw := range l {
1451+ original := raw .(map [string ]interface {})
1452+ if len (original ) < 1 {
1453+ // Do not include empty json objects coming back from the api
1454+ continue
1455+ }
1456+ transformed = append (transformed , map [string ]interface {}{
1457+ "type" : flattenWorkstationsWorkstationConfigHostGceInstanceBoostConfigsAcceleratorsType (original ["type" ], d , config ),
1458+ "count" : flattenWorkstationsWorkstationConfigHostGceInstanceBoostConfigsAcceleratorsCount (original ["count" ], d , config ),
1459+ })
1460+ }
1461+ return transformed
1462+ }
1463+ func flattenWorkstationsWorkstationConfigHostGceInstanceBoostConfigsAcceleratorsType (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1464+ return v
1465+ }
1466+
1467+ func flattenWorkstationsWorkstationConfigHostGceInstanceBoostConfigsAcceleratorsCount (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1468+ // Handles the string fixed64 format
1469+ if strVal , ok := v .(string ); ok {
1470+ if intVal , err := tpgresource .StringToFixed64 (strVal ); err == nil {
1471+ return intVal
1472+ }
1473+ }
1474+
1475+ // number values are represented as float64
1476+ if floatVal , ok := v .(float64 ); ok {
1477+ intVal := int (floatVal )
1478+ return intVal
1479+ }
1480+
1481+ return v // let terraform core handle it otherwise
1482+ }
1483+
13751484func flattenWorkstationsWorkstationConfigPersistentDirectories (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
13761485 if v == nil {
13771486 return v
@@ -1842,6 +1951,13 @@ func expandWorkstationsWorkstationConfigHostGceInstance(v interface{}, d tpgreso
18421951 transformed ["accelerators" ] = transformedAccelerators
18431952 }
18441953
1954+ transformedBoostConfigs , err := expandWorkstationsWorkstationConfigHostGceInstanceBoostConfigs (original ["boost_configs" ], d , config )
1955+ if err != nil {
1956+ return nil , err
1957+ } else if val := reflect .ValueOf (transformedBoostConfigs ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1958+ transformed ["boostConfigs" ] = transformedBoostConfigs
1959+ }
1960+
18451961 return transformed , nil
18461962}
18471963
@@ -1986,6 +2102,87 @@ func expandWorkstationsWorkstationConfigHostGceInstanceAcceleratorsCount(v inter
19862102 return v , nil
19872103}
19882104
2105+ func expandWorkstationsWorkstationConfigHostGceInstanceBoostConfigs (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2106+ l := v .([]interface {})
2107+ req := make ([]interface {}, 0 , len (l ))
2108+ for _ , raw := range l {
2109+ if raw == nil {
2110+ continue
2111+ }
2112+ original := raw .(map [string ]interface {})
2113+ transformed := make (map [string ]interface {})
2114+
2115+ transformedId , err := expandWorkstationsWorkstationConfigHostGceInstanceBoostConfigsId (original ["id" ], d , config )
2116+ if err != nil {
2117+ return nil , err
2118+ } else if val := reflect .ValueOf (transformedId ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2119+ transformed ["id" ] = transformedId
2120+ }
2121+
2122+ transformedMachineType , err := expandWorkstationsWorkstationConfigHostGceInstanceBoostConfigsMachineType (original ["machine_type" ], d , config )
2123+ if err != nil {
2124+ return nil , err
2125+ } else if val := reflect .ValueOf (transformedMachineType ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2126+ transformed ["machineType" ] = transformedMachineType
2127+ }
2128+
2129+ transformedAccelerators , err := expandWorkstationsWorkstationConfigHostGceInstanceBoostConfigsAccelerators (original ["accelerators" ], d , config )
2130+ if err != nil {
2131+ return nil , err
2132+ } else if val := reflect .ValueOf (transformedAccelerators ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2133+ transformed ["accelerators" ] = transformedAccelerators
2134+ }
2135+
2136+ req = append (req , transformed )
2137+ }
2138+ return req , nil
2139+ }
2140+
2141+ func expandWorkstationsWorkstationConfigHostGceInstanceBoostConfigsId (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2142+ return v , nil
2143+ }
2144+
2145+ func expandWorkstationsWorkstationConfigHostGceInstanceBoostConfigsMachineType (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2146+ return v , nil
2147+ }
2148+
2149+ func expandWorkstationsWorkstationConfigHostGceInstanceBoostConfigsAccelerators (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2150+ l := v .([]interface {})
2151+ req := make ([]interface {}, 0 , len (l ))
2152+ for _ , raw := range l {
2153+ if raw == nil {
2154+ continue
2155+ }
2156+ original := raw .(map [string ]interface {})
2157+ transformed := make (map [string ]interface {})
2158+
2159+ transformedType , err := expandWorkstationsWorkstationConfigHostGceInstanceBoostConfigsAcceleratorsType (original ["type" ], d , config )
2160+ if err != nil {
2161+ return nil , err
2162+ } else if val := reflect .ValueOf (transformedType ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2163+ transformed ["type" ] = transformedType
2164+ }
2165+
2166+ transformedCount , err := expandWorkstationsWorkstationConfigHostGceInstanceBoostConfigsAcceleratorsCount (original ["count" ], d , config )
2167+ if err != nil {
2168+ return nil , err
2169+ } else if val := reflect .ValueOf (transformedCount ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
2170+ transformed ["count" ] = transformedCount
2171+ }
2172+
2173+ req = append (req , transformed )
2174+ }
2175+ return req , nil
2176+ }
2177+
2178+ func expandWorkstationsWorkstationConfigHostGceInstanceBoostConfigsAcceleratorsType (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2179+ return v , nil
2180+ }
2181+
2182+ func expandWorkstationsWorkstationConfigHostGceInstanceBoostConfigsAcceleratorsCount (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2183+ return v , nil
2184+ }
2185+
19892186func expandWorkstationsWorkstationConfigPersistentDirectories (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
19902187 l := v .([]interface {})
19912188 req := make ([]interface {}, 0 , len (l ))
0 commit comments