Set run config for provisioner

This commit is contained in:
sophia 2020-05-05 18:37:18 -04:00
parent 33576b5846
commit 9b6c562016
5 changed files with 24 additions and 31 deletions

View File

@ -50,7 +50,6 @@ module Vagrant
before: provisioner.before,
after: provisioner.after,
communicator_required: provisioner.communicator_required,
id: provisioner.id
}
# Return the result

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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: |-