@ -6,11 +6,7 @@ import (
"github.com/mitchellh/multistep"
"github.com/mitchellh/packer/builder/common"
"github.com/mitchellh/packer/packer"
"io"
"io/ioutil"
"log"
"os"
"path/filepath"
"time"
)
@ -23,11 +19,9 @@ import (
//
// Produces:
// iso_path string
type stepDownloadISO struct {
isoCopyDir string
}
type stepDownloadISO struct { }
func ( s * stepDownloadISO ) Run ( state map [ string ] interface { } ) multistep . StepAction {
func ( s stepDownloadISO ) Run ( state map [ string ] interface { } ) multistep . StepAction {
cache := state [ "cache" ] . ( packer . Cache )
config := state [ "config" ] . ( * config )
ui := state [ "ui" ] . ( packer . Ui )
@ -84,44 +78,10 @@ DownloadWaitLoop:
}
}
// VirtualBox is really dumb and can't figure out that the file is an
// ISO unless it has a ".iso" extension. We can't modify the cache
// filenames so we just do a copy.
tempdir , err := ioutil . TempDir ( "" , "packer" )
if err != nil {
state [ "error" ] = fmt . Errorf ( "Error copying ISO: %s" , err )
return multistep . ActionHalt
}
s . isoCopyDir = tempdir
f , err := os . Create ( filepath . Join ( tempdir , "image.iso" ) )
if err != nil {
state [ "error" ] = fmt . Errorf ( "Error copying ISO: %s" , err )
return multistep . ActionHalt
}
defer f . Close ( )
sourceF , err := os . Open ( cachePath )
if err != nil {
state [ "error" ] = fmt . Errorf ( "Error copying ISO: %s" , err )
return multistep . ActionHalt
}
defer sourceF . Close ( )
log . Printf ( "Copying ISO to temp location: %s" , tempdir )
if _ , err := io . Copy ( f , sourceF ) ; err != nil {
state [ "error" ] = fmt . Errorf ( "Error copying ISO: %s" , err )
return multistep . ActionHalt
}
log . Printf ( "Path to ISO on disk: %s" , cachePath )
state [ "iso_path" ] = f. Name ( )
state [ "iso_path" ] = cachePath
return multistep . ActionContinue
}
func ( s * stepDownloadISO ) Cleanup ( map [ string ] interface { } ) {
if s . isoCopyDir != "" {
os . RemoveAll ( s . isoCopyDir )
}
}
func ( stepDownloadISO ) Cleanup ( map [ string ] interface { } ) { }