Initial up action. Not hooked up yet to the vagrant-up bin though

This commit is contained in:
Mitchell Hashimoto 2010-02-14 22:47:23 -08:00
parent 1753d97d45
commit 9438b3b01e
2 changed files with 78 additions and 0 deletions

36
lib/vagrant/actions/up.rb Normal file
View File

@ -0,0 +1,36 @@
module Vagrant
module Actions
class Up < Base
def prepare
# Up is a "meta-action" so it really just queues up a bunch
# of other actions in its place:
[Import, ForwardPorts, SharedFolders, Start].each do |action_klass|
@vm.actions << action_klass
end
# TODO: Move hard drive
end
def collect_shared_folders
# The root shared folder for the project
["vagrant-root", Env.root_path, Vagrant.config.vm.project_directory]
end
def before_boot
persist
setup_mac_address
end
def persist
logger.info "Persisting the VM UUID (#{@vm.vm.uuid})..."
Env.persist_vm(@vm.vm)
end
def setup_mac_address
logger.info "Matching MAC addresses..."
@vm.vm.nics.first.macaddress = Vagrant.config[:vm][:base_mac]
@vm.vm.save(true)
end
end
end
end

View File

@ -0,0 +1,42 @@
require File.join(File.dirname(__FILE__), '..', '..', 'test_helper')
class UpActionTest < Test::Unit::TestCase
setup do
@mock_vm, @vm, @import = mock_action(Vagrant::Actions::Up)
mock_config
end
context "callbacks" do
should "call persist and mac address setup before boot" do
boot_seq = sequence("boot")
@action.expects(:persist).once.in_sequence(boot_seq)
@action.expects(:setup_mac_address).once.in_sequence(boot_seq)
@action.before_boot
end
should "setup the root directory shared folder" do
expected = ["vagrant-root", Vagrant::Env.root_path, Vagrant.config.vm.project_directory]
assert_equal expected, @action.collect_shared_folders
end
end
context "persisting" do
should "persist the VM with Env" do
@vm.stubs(:uuid)
Vagrant::Env.expects(:persist_vm).with(@vm).once
@action.persist
end
end
context "setting up MAC address" do
should "match the mac address with the base" do
nic = mock("nic")
nic.expects(:macaddress=).once
@vm.expects(:nics).returns([nic]).once
@vm.expects(:save).with(true).once
@action.setup_mac_address
end
end
end