vagrant/lib/vagrant/action/builtin.rb

118 lines
3.2 KiB
Ruby

module Vagrant
class Action
# Registers the builtin actions. These are locked away in a
# method so that their definition can be deferred until after
# all the necessary Vagrant libraries are loaded. Hopefully
# in the future this will no longer be necessary with autoloading.
def self.builtin!
return
# provision - Provisions a running VM
register(:provision, Builder.new do
use VM::CheckAccessible
use VM::Provision
end)
# start - Starts a VM, assuming it already exists on the
# environment.
register(:start, Builder.new do
use VM::CheckAccessible
use VM::CleanMachineFolder
use VM::ClearForwardedPorts
use VM::ForwardPorts
use VM::Provision
use VM::NFS
use VM::ClearSharedFolders
use VM::ShareFolders
use VM::HostName
use VM::Network
use VM::Customize
use VM::Modify
use VM::Boot
end)
# halt - Halts the VM, attempting gracefully but then forcing
# a restart if fails.
register(:halt, Builder.new do
use VM::CheckAccessible
use VM::DiscardState
use VM::Halt
end)
# suspend - Suspends the VM
register(:suspend, Builder.new do
use VM::CheckAccessible
use VM::Suspend
end)
# resume - Resume a VM
register(:resume, Builder.new do
use VM::CheckAccessible
use VM::Resume
end)
# reload - Halts then restarts the VM
register(:reload, Builder.new do
use VM::CheckAccessible
use Action[:halt]
use Action[:start]
end)
# up - Imports, prepares, then starts a fresh VM.
register(:up, Builder.new do
use VM::CheckAccessible
use VM::CheckBox
use VM::Import
use VM::MatchMACAddress
use VM::CheckGuestAdditions
use Action[:start]
end)
# destroy - Halts, cleans up, and destroys an existing VM
register(:destroy, Builder.new do
use VM::CheckAccessible
use Action[:halt], :force => true
use VM::ProvisionerCleanup
use VM::ClearNFSExports
use VM::Destroy
use VM::CleanMachineFolder
use VM::DestroyUnusedNetworkInterfaces
end)
# package - Export and package the VM
register(:package, Builder.new do
use VM::CheckAccessible
use Action[:halt]
use VM::ClearForwardedPorts
use VM::ClearSharedFolders
use VM::Modify
use VM::Export
use VM::PackageVagrantfile
use VM::Package
end)
# box_add - Download and add a box.
register(:box_add, Builder.new do
use Box::Download
use Box::Unpackage
use Box::Verify
end)
# box_remove - Removes/deletes a box.
register(:box_remove, Builder.new do
use Box::Destroy
end)
# box_repackage - Repackages a box.
register(:box_repackage, Builder.new do
use Box::Package
end)
# Other callbacks. There will be more of these in the future. For
# now, these are limited to what are needed internally.
register(:before_action_run, Builder.new do
# use General::Validate
end)
end
end
end