func()

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()
}