@@ -328,6 +328,28 @@ Learn more about using your own encryption keys.'`,
328328 },
329329 },
330330 },
331+ "container_image" : {
332+ Type : schema .TypeList ,
333+ Optional : true ,
334+ Description : `Use a container image to start the workbench instance.` ,
335+ MaxItems : 1 ,
336+ Elem : & schema.Resource {
337+ Schema : map [string ]* schema.Schema {
338+ "repository" : {
339+ Type : schema .TypeString ,
340+ Required : true ,
341+ Description : `The path to the container image repository.
342+ For example: gcr.io/{project_id}/{imageName}` ,
343+ },
344+ "tag" : {
345+ Type : schema .TypeString ,
346+ Optional : true ,
347+ Description : `The tag of the container image. If not specified, this defaults to the latest tag.` ,
348+ },
349+ },
350+ },
351+ ConflictsWith : []string {"gce_setup.0.vm_image" },
352+ },
331353 "data_disks" : {
332354 Type : schema .TypeList ,
333355 Computed : true ,
@@ -547,6 +569,7 @@ Format: {project_id}`,
547569 },
548570 },
549571 },
572+ ConflictsWith : []string {"gce_setup.0.container_image" },
550573 },
551574 },
552575 },
@@ -1155,6 +1178,8 @@ func flattenWorkbenchInstanceGceSetup(v interface{}, d *schema.ResourceData, con
11551178 flattenWorkbenchInstanceGceSetupServiceAccounts (original ["serviceAccounts" ], d , config )
11561179 transformed ["vm_image" ] =
11571180 flattenWorkbenchInstanceGceSetupVmImage (original ["vmImage" ], d , config )
1181+ transformed ["container_image" ] =
1182+ flattenWorkbenchInstanceGceSetupContainerImage (original ["containerImage" ], d , config )
11581183 transformed ["boot_disk" ] =
11591184 flattenWorkbenchInstanceGceSetupBootDisk (original ["bootDisk" ], d , config )
11601185 transformed ["data_disks" ] =
@@ -1262,6 +1287,29 @@ func flattenWorkbenchInstanceGceSetupVmImage(v interface{}, d *schema.ResourceDa
12621287 return d .Get ("gce_setup.0.vm_image" )
12631288}
12641289
1290+ func flattenWorkbenchInstanceGceSetupContainerImage (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1291+ if v == nil {
1292+ return nil
1293+ }
1294+ original := v .(map [string ]interface {})
1295+ if len (original ) == 0 {
1296+ return nil
1297+ }
1298+ transformed := make (map [string ]interface {})
1299+ transformed ["repository" ] =
1300+ flattenWorkbenchInstanceGceSetupContainerImageRepository (original ["repository" ], d , config )
1301+ transformed ["tag" ] =
1302+ flattenWorkbenchInstanceGceSetupContainerImageTag (original ["tag" ], d , config )
1303+ return []interface {}{transformed }
1304+ }
1305+ func flattenWorkbenchInstanceGceSetupContainerImageRepository (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1306+ return v
1307+ }
1308+
1309+ func flattenWorkbenchInstanceGceSetupContainerImageTag (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1310+ return v
1311+ }
1312+
12651313func flattenWorkbenchInstanceGceSetupBootDisk (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
12661314 if v == nil {
12671315 return nil
@@ -1562,6 +1610,13 @@ func expandWorkbenchInstanceGceSetup(v interface{}, d tpgresource.TerraformResou
15621610 transformed ["vmImage" ] = transformedVmImage
15631611 }
15641612
1613+ transformedContainerImage , err := expandWorkbenchInstanceGceSetupContainerImage (original ["container_image" ], d , config )
1614+ if err != nil {
1615+ return nil , err
1616+ } else if val := reflect .ValueOf (transformedContainerImage ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1617+ transformed ["containerImage" ] = transformedContainerImage
1618+ }
1619+
15651620 transformedBootDisk , err := expandWorkbenchInstanceGceSetupBootDisk (original ["boot_disk" ], d , config )
15661621 if err != nil {
15671622 return nil , err
@@ -1787,6 +1842,40 @@ func expandWorkbenchInstanceGceSetupVmImageFamily(v interface{}, d tpgresource.T
17871842 return v , nil
17881843}
17891844
1845+ func expandWorkbenchInstanceGceSetupContainerImage (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1846+ l := v .([]interface {})
1847+ if len (l ) == 0 || l [0 ] == nil {
1848+ return nil , nil
1849+ }
1850+ raw := l [0 ]
1851+ original := raw .(map [string ]interface {})
1852+ transformed := make (map [string ]interface {})
1853+
1854+ transformedRepository , err := expandWorkbenchInstanceGceSetupContainerImageRepository (original ["repository" ], d , config )
1855+ if err != nil {
1856+ return nil , err
1857+ } else if val := reflect .ValueOf (transformedRepository ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1858+ transformed ["repository" ] = transformedRepository
1859+ }
1860+
1861+ transformedTag , err := expandWorkbenchInstanceGceSetupContainerImageTag (original ["tag" ], d , config )
1862+ if err != nil {
1863+ return nil , err
1864+ } else if val := reflect .ValueOf (transformedTag ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1865+ transformed ["tag" ] = transformedTag
1866+ }
1867+
1868+ return transformed , nil
1869+ }
1870+
1871+ func expandWorkbenchInstanceGceSetupContainerImageRepository (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1872+ return v , nil
1873+ }
1874+
1875+ func expandWorkbenchInstanceGceSetupContainerImageTag (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1876+ return v , nil
1877+ }
1878+
17901879func expandWorkbenchInstanceGceSetupBootDisk (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
17911880 l := v .([]interface {})
17921881 if len (l ) == 0 || l [0 ] == nil {
0 commit comments