in executors/virtualbox/virtualbox.go [149:202]
func (s *executor) Prepare(options common.ExecutorPrepareOptions) error {
err := s.AbstractExecutor.Prepare(options)
if err != nil {
return err
}
err = s.validateConfig()
if err != nil {
return err
}
err = s.printVersion()
if err != nil {
return err
}
var baseName string
baseName, err = s.Executor.GetBaseName(s.Config.VirtualBox.BaseName)
if err != nil {
return err
}
s.vmName = s.getVMName(baseName)
if s.Config.VirtualBox.DisableSnapshots && vbox.Exist(s.Context, s.vmName) {
s.BuildLogger.Debugln("Deleting old VM...")
killAndUnregisterVM(s.Context, s.vmName)
}
s.tryRestoreFromSnapshot()
if !vbox.Exist(s.Context, s.vmName) {
s.BuildLogger.Println("Creating new VM...")
err = s.createVM(baseName)
if err != nil {
return err
}
if !s.Config.VirtualBox.DisableSnapshots {
s.BuildLogger.Println("Creating default snapshot...")
err = vbox.CreateSnapshot(s.Context, s.vmName, "Started")
if err != nil {
return err
}
}
}
err = s.ensureVMStarted()
if err != nil {
return err
}
return s.sshConnect()
}