Class: Vagrant::Actions::VM::Boot

Inherits:
Base
  • Object
show all
Defined in:
lib/vagrant/actions/vm/boot.rb

Instance Attribute Summary

Attributes inherited from Base

#runner

Instance Method Summary collapse

Methods inherited from Base

#cleanup, #follows, #initialize, #precedes, #rescue

Methods included from Util

#error_and_exit, included, #logger, #wrap_output

Constructor Details

This class inherits a constructor from Vagrant::Actions::Base

Instance Method Details

#bootObject



22
23
24
25
# File 'lib/vagrant/actions/vm/boot.rb', line 22

def boot
  logger.info "Booting VM..."
  @runner.vm.start(:headless, true)
end

#execute!Object



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/vagrant/actions/vm/boot.rb', line 9

def execute!
  @runner.invoke_around_callback(:boot) do
    # Startup the VM
    boot

    # Wait for it to complete booting, or error if we could
    # never detect it booted up successfully
    if !wait_for_boot
      error_and_exit(:vm_failed_to_boot)
    end
  end
end

#prepareObject



5
6
7
# File 'lib/vagrant/actions/vm/boot.rb', line 5

def prepare
  @runner.env.config.vm.share_folder("vagrant-root", @runner.env.config.vm.project_directory, @runner.env.root_path)
end

#wait_for_boot(sleeptime = 5) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/vagrant/actions/vm/boot.rb', line 27

def wait_for_boot(sleeptime=5)
  logger.info "Waiting for VM to boot..."

  @runner.env.config.ssh.max_tries.to_i.times do |i|
    logger.info "Trying to connect (attempt ##{i+1} of #{Vagrant.config[:ssh][:max_tries]})..."

    if @runner.env.ssh.up?
      logger.info "VM booted and ready for use!"
      return true
    end

    sleep sleeptime
  end

  logger.info "Failed to connect to VM! Failed to boot?"
  false
end