Merge pull request #2405 from fgrehm/2044-provisioner-hooking
core: support hooking around provisioners runs
This commit is contained in:
commit
d6fb083507
|
@ -20,6 +20,7 @@ module Vagrant
|
|||
autoload :Lock, "vagrant/action/builtin/lock"
|
||||
autoload :Provision, "vagrant/action/builtin/provision"
|
||||
autoload :ProvisionerCleanup, "vagrant/action/builtin/provisioner_cleanup"
|
||||
autoload :ProvisionerRun, "vagrant/action/builtin/provisioner_run"
|
||||
autoload :SetHostname, "vagrant/action/builtin/set_hostname"
|
||||
autoload :SSHExec, "vagrant/action/builtin/ssh_exec"
|
||||
autoload :SSHRun, "vagrant/action/builtin/ssh_run"
|
||||
|
|
|
@ -78,7 +78,21 @@ module Vagrant
|
|||
env[:ui].info(I18n.t("vagrant.actions.vm.provision.beginning",
|
||||
:provisioner => name))
|
||||
|
||||
p.provision
|
||||
callable = Builder.new.tap { |b| b.use ProvisionerRun, p }
|
||||
action_runner.run(callable,
|
||||
:action_name => :provisioner_run,
|
||||
:provider_name => name
|
||||
)
|
||||
end
|
||||
|
||||
def action_runner
|
||||
@action_runner ||= Action::Runner.new do
|
||||
{
|
||||
:env => @env[:env],
|
||||
:machine => @env[:machine],
|
||||
:ui => @env[:ui]
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
require "log4r"
|
||||
|
||||
module Vagrant
|
||||
module Action
|
||||
module Builtin
|
||||
# This action is basically a wrapper on top of provisioner runs that
|
||||
# enable plugins to hook around the provisioning itself
|
||||
class ProvisionerRun
|
||||
def initialize(app, env, provisioner)
|
||||
@app = app
|
||||
@provisioner = provisioner
|
||||
end
|
||||
|
||||
def call(env)
|
||||
@app.call(env)
|
||||
@provisioner.provision
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue