Add CheckBox to up command and make the typical require_box checks
This commit is contained in:
parent
23296093b1
commit
4ec6196b3b
|
@ -62,6 +62,7 @@ module Vagrant
|
||||||
|
|
||||||
# up - Imports, prepares, then starts a fresh VM.
|
# up - Imports, prepares, then starts a fresh VM.
|
||||||
up = Builder.new do
|
up = Builder.new do
|
||||||
|
use VM::CheckBox
|
||||||
use VM::Import
|
use VM::Import
|
||||||
use VM::Persist
|
use VM::Persist
|
||||||
use VM::MatchMACAddress
|
use VM::MatchMACAddress
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
module Vagrant
|
|
||||||
class Action
|
|
||||||
module VM
|
|
||||||
class Check
|
|
||||||
def initialize(app, env)
|
|
||||||
@app = app
|
|
||||||
end
|
|
||||||
|
|
||||||
def call(env)
|
|
||||||
box_name = env["config"].vm.box
|
|
||||||
|
|
||||||
env.logger.info "Checking if the box '#{box_name}' was already downloaded"
|
|
||||||
|
|
||||||
box = Vagrant::Box.find(env.env , box_name)
|
|
||||||
env.logger.info "The box #{box} were found"
|
|
||||||
@app.call(env)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
module Vagrant
|
||||||
|
class Action
|
||||||
|
module VM
|
||||||
|
class CheckBox
|
||||||
|
def initialize(app, env)
|
||||||
|
@app = app
|
||||||
|
end
|
||||||
|
|
||||||
|
def call(env)
|
||||||
|
box_name = env["config"].vm.box
|
||||||
|
return env.error!(:box_not_specified) if !box_name
|
||||||
|
|
||||||
|
if !Vagrant::Box.find(env.env , box_name)
|
||||||
|
box_url = env["config"].vm.box_url
|
||||||
|
return env.error!(:box_specified_doesnt_exist, :box_name => box_name) if !box_url
|
||||||
|
|
||||||
|
env.logger.info "Box #{box_name} not found. Fetching box since URL specified..."
|
||||||
|
end
|
||||||
|
|
||||||
|
@app.call(env)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -23,8 +23,6 @@ module Vagrant
|
||||||
vm.env.logger.info "VM '#{name}' already created. Booting if its not already running..."
|
vm.env.logger.info "VM '#{name}' already created. Booting if its not already running..."
|
||||||
vm.start
|
vm.start
|
||||||
else
|
else
|
||||||
vm.env.require_box
|
|
||||||
|
|
||||||
vm.env.logger.info "Creating VM '#{name}'"
|
vm.env.logger.info "Creating VM '#{name}'"
|
||||||
vm.up
|
vm.up
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
require File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper')
|
||||||
|
|
||||||
|
class CheckBoxVMActionTest < Test::Unit::TestCase
|
||||||
|
setup do
|
||||||
|
@klass = Vagrant::Action::VM::CheckBox
|
||||||
|
@app, @env = mock_action_data
|
||||||
|
@instance = @klass.new(@app, @env)
|
||||||
|
end
|
||||||
|
|
||||||
|
context "calling" do
|
||||||
|
setup do
|
||||||
|
Vagrant::Box.stubs(:find)
|
||||||
|
end
|
||||||
|
|
||||||
|
should "return error if box not specified" do
|
||||||
|
@env.env.config.vm.box = nil
|
||||||
|
|
||||||
|
@app.expects(:call).never
|
||||||
|
@instance.call(@env)
|
||||||
|
|
||||||
|
assert @env.error?
|
||||||
|
assert_equal :box_not_specified, @env.error.first
|
||||||
|
end
|
||||||
|
|
||||||
|
should "error if box does not exist and URL not specified" do
|
||||||
|
@env.env.config.vm.box_url = nil
|
||||||
|
Vagrant::Box.expects(:find).with(@env.env, @env["config"].vm.box).returns(nil)
|
||||||
|
|
||||||
|
@app.expects(:call).never
|
||||||
|
@instance.call(@env)
|
||||||
|
|
||||||
|
assert @env.error?
|
||||||
|
assert_equal :box_specified_doesnt_exist, @env.error.first
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,25 +0,0 @@
|
||||||
require File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper')
|
|
||||||
|
|
||||||
|
|
||||||
class CheckVMActionTest < Test::Unit::TestCase
|
|
||||||
setup do
|
|
||||||
@klass = Vagrant::Action::VM::Check
|
|
||||||
@app, @env = mock_action_data
|
|
||||||
@instance = @klass.new(@app, @env)
|
|
||||||
|
|
||||||
@env['config'].vm.box = "foo"
|
|
||||||
end
|
|
||||||
should "check if the box exist" do
|
|
||||||
Vagrant::Box.expects("find").with(@env.env, 'foo')
|
|
||||||
@instance.call(@env)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
should 'continue the chain process' do
|
|
||||||
Vagrant::Box.stubs('find').with(@env.env, 'foo')
|
|
||||||
@app.expects(:call).with(@env).once
|
|
||||||
@instance.call(@env)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
|
@ -38,7 +38,6 @@ class CommandsUpTest < Test::Unit::TestCase
|
||||||
|
|
||||||
should "up non-created VMs" do
|
should "up non-created VMs" do
|
||||||
@vm.stubs(:created?).returns(false)
|
@vm.stubs(:created?).returns(false)
|
||||||
@vm.env.expects(:require_box).once
|
|
||||||
@vm.expects(:up).once
|
@vm.expects(:up).once
|
||||||
@vm.expects(:start).never
|
@vm.expects(:start).never
|
||||||
@instance.up_single(:foo)
|
@instance.up_single(:foo)
|
||||||
|
|
Loading…
Reference in New Issue