Set run config for provisioner
This commit is contained in:
parent
33576b5846
commit
9b6c562016
@ -50,7 +50,6 @@ module Vagrant
|
||||
before: provisioner.before,
|
||||
after: provisioner.after,
|
||||
communicator_required: provisioner.communicator_required,
|
||||
id: provisioner.id
|
||||
}
|
||||
|
||||
# Return the result
|
||||
|
||||
@ -14,10 +14,9 @@ module Vagrant
|
||||
class Provision
|
||||
include MixinProvisioners
|
||||
|
||||
def initialize(app, env, ids=nil)
|
||||
def initialize(app, env)
|
||||
@app = app
|
||||
@logger = Log4r::Logger.new("vagrant::action::builtin::provision")
|
||||
@provisioner_ids = ids
|
||||
end
|
||||
|
||||
def call(env)
|
||||
@ -101,13 +100,7 @@ module Vagrant
|
||||
end
|
||||
|
||||
type_map = provisioner_type_map(env)
|
||||
if @provisioner_ids
|
||||
provisioners = provisioner_instances(env).map { |p, opts| [p, opts] if @provisioner_ids.include?(opts[:id]) }.compact
|
||||
else
|
||||
provisioners = provisioner_instances(env)
|
||||
end
|
||||
|
||||
provisioners.each do |p, options|
|
||||
provisioner_instances(env).each do |p, options|
|
||||
type_name = type_map[p]
|
||||
|
||||
if options[:run] == :never
|
||||
|
||||
@ -66,14 +66,11 @@ module VagrantPlugins
|
||||
next
|
||||
end
|
||||
|
||||
b3.use Call, HasSSH do |env3, b4|
|
||||
if env3[:result]
|
||||
b4.use Provision
|
||||
else
|
||||
b4.use Message,
|
||||
I18n.t("docker_provider.messages.provision_no_ssh"),
|
||||
post: true
|
||||
b3.use Call, HasProvisioner do |env3, b4|
|
||||
if env3[:skip].length > 0
|
||||
b4.use Message, I18n.t("docker_provider.messages.not_provisioning", provisioiners: check_skipped_provisioners(env3[:skip]))
|
||||
end
|
||||
b4.use Provision
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -217,11 +214,10 @@ module VagrantPlugins
|
||||
b.use Call, IsState, :running do |env, b2|
|
||||
if env[:machine_action] != :run_command
|
||||
b2.use Call, HasProvisioner do |env2, b3|
|
||||
ids = env2[:run].map { |r| r.id }
|
||||
name_type = env2[:skip].map { |r| [r.name, r.type] }
|
||||
b3.use Provision, ids
|
||||
# TODO: fix message
|
||||
b3.use Message, "skipping provisioners: #{name_type}"
|
||||
if env2[:skip].length > 0
|
||||
b3.use Message, I18n.t("docker_provider.messages.not_provisioning", provisioiners: check_skipped_provisioners(env2[:skip]))
|
||||
end
|
||||
b3.use Provision
|
||||
end
|
||||
end
|
||||
|
||||
@ -323,6 +319,13 @@ module VagrantPlugins
|
||||
autoload :Start, action_root.join("start")
|
||||
autoload :Stop, action_root.join("stop")
|
||||
autoload :WaitForRunning, action_root.join("wait_for_running")
|
||||
|
||||
private
|
||||
|
||||
def self.check_skipped_provisioners(provisioners)
|
||||
skipped_provisioners = provisioners.map { |p| "#{p.name || 'no name'}, type: #{p.type}" }
|
||||
skipped_provisioners.join("\n- ")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -9,21 +9,15 @@ module VagrantPlugins
|
||||
end
|
||||
|
||||
def call(env)
|
||||
env[:run] = []
|
||||
env[:skip] = []
|
||||
has_ssh = env[:machine].provider_config.has_ssh
|
||||
if has_ssh
|
||||
env[:run] = env[:machine].config.vm.provisioners
|
||||
else
|
||||
if !env[:machine].provider_config.has_ssh
|
||||
env[:machine].config.vm.provisioners.each do |p|
|
||||
if p.communicator_required
|
||||
env[:skip].push(p)
|
||||
else
|
||||
env[:run].push(p)
|
||||
env[:skip].push(p)
|
||||
p.run = :never
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@app.call(env)
|
||||
end
|
||||
end
|
||||
|
||||
@ -133,6 +133,10 @@ en:
|
||||
Stopping container...
|
||||
container_ready: |-
|
||||
Container started and ready for use!
|
||||
not_provisioning: |-
|
||||
The following provisioners require a communicator, though none is available (this container does not supprt SSH).
|
||||
Not running the following provisioners:
|
||||
- %{provisioiners}
|
||||
|
||||
status:
|
||||
host_state_unknown: |-
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user