Mitchell Hashimoto d97c972a7f Boot action
2010-07-05 02:44:30 +02:00

47 lines
1.0 KiB
Ruby

module Vagrant
class Action
module VM
class Boot
def initialize(app, env)
@app = app
@env = env
end
def call(env)
@env = env
# Start up the VM and wait for it to boot.
boot
return env.error!(:vm_failed_to_boot) if !wait_for_boot
@app.call(env)
end
def boot
@env.logger.info "Booting VM..."
@env["vm"].vm.start(@env.env.config.vm.boot_mode)
end
def wait_for_boot(sleeptime=5)
@env.logger.info "Waiting for VM to boot..."
@env.env.config.ssh.max_tries.to_i.times do |i|
@env.logger.info "Trying to connect (attempt ##{i+1} of #{@env.env.config[:ssh][:max_tries]})..."
if @env["vm"].ssh.up?
@env.logger.info "VM booted and ready for use!"
return true
end
sleep sleeptime
end
@env.logger.info "Failed to connect to VM! Failed to boot?"
false
end
end
end
end
end