6060 image_name = flag .String ("image-name" , "" , "output GCE image name" )
6161 deb_srcs = DebSrcsFlag {}
6262 defaults_cuttlefish_integration_src = flag .String ("defaults_cuttlefish_integration_src" , "" , "Path to file which will be written to /etc/defaults/cuttlefish-integration." )
63+ container_image_src = flag .String ("container-image-src" , "" , "local path to container image" )
6364)
6465
6566func init () {
@@ -71,6 +72,7 @@ type amendImageOpts struct {
7172 SourceImage string
7273 ImageName string
7374 DebSrcs []string
75+ ContainerImageSrc string
7476}
7577
7678func uploadScripts (project , zone , insName string ) error {
@@ -80,7 +82,8 @@ func uploadScripts(project, zone, insName string) error {
8082 }{
8183 {"fill_available_disk_space.sh" , scripts .FillAvailableDiskSpace },
8284 {"mount_attached_disk.sh" , scripts .MountAttachedDisk },
83- {"install_cuttlefish_debs.sh" , scripts .InstallCuttlefishPackages },
85+ {"install_cuttlefish_debs.sh" , scripts .InstallCuttlefishDebs },
86+ {"load_cuttlefish_container_image.sh" , scripts .LoadCuttlefishContainerImage },
8487 }
8588 for _ , s := range list {
8689 if err := gce .UploadBashScript (project , zone , insName , s .dstname , s .content ); err != nil {
@@ -124,6 +127,17 @@ func maybeSetDefaultsCuttlefishIntegrationFile(project, zone, insName string) er
124127 return nil
125128}
126129
130+ func loadCuttlefishContainerImage (project , zone , insName string , imageSrc string ) error {
131+ dst := "/tmp/" + filepath .Base (imageSrc )
132+ if err := gce .UploadFile (project , zone , insName , imageSrc , dst ); err != nil {
133+ return fmt .Errorf ("error uploading %s: %v" , imageSrc , err )
134+ }
135+ if err := gce .RunCmd (project , zone , insName , "./load_cuttlefish_container_image.sh " + dst ); err != nil {
136+ return err
137+ }
138+ return nil
139+ }
140+
127141func cleanupDeleteDisk (h * gce.GceHelper , disk string ) {
128142 log .Printf ("cleanup: deleting disk %q..." , disk )
129143 if err := h .DeleteDisk (disk ); err != nil {
@@ -208,6 +222,10 @@ func amendImageMain(project, zone string, opts amendImageOpts) error {
208222 return fmt .Errorf ("couldn't set %s: %v" , defaultsCuttlefishIntegrationFile , err )
209223 }
210224
225+ if err := loadCuttlefishContainerImage (project , zone , insName , opts .ContainerImageSrc ); err != nil {
226+ return fmt .Errorf ("install cuttlefish container error: %v" , err )
227+ }
228+
211229 // Reboot the instance to force a clean umount of the attached disk's file system.
212230 if err := gce .RunCmd (project , zone , insName , "sudo reboot" ); err != nil {
213231 return err
@@ -252,12 +270,16 @@ func main() {
252270 if len (deb_srcs .Srcs ) == 0 {
253271 log .Fatal ("usage: `-deb` must not be empty" )
254272 }
273+ if * container_image_src == "" {
274+ log .Fatal ("usage: `-container-image-src` must not be empty" )
275+ }
255276
256277 opts := amendImageOpts {
257278 SourceImageProject : * source_image_project ,
258279 SourceImage : * source_image ,
259280 ImageName : * image_name ,
260281 DebSrcs : deb_srcs .Srcs ,
282+ ContainerImageSrc : * container_image_src ,
261283 }
262284 if err := amendImageMain (* project , * zone , opts ); err != nil {
263285 log .Fatal (err )
0 commit comments