From 9b6c562016baf3cf5a997dad1590b5a67002a16f Mon Sep 17 00:00:00 2001 From: sophia Date: Tue, 5 May 2020 18:37:18 -0400 Subject: [PATCH] Set run config for provisioner --- .../action/builtin/mixin_provisioners.rb | 1 - lib/vagrant/action/builtin/provision.rb | 11 ++------ plugins/providers/docker/action.rb | 27 ++++++++++--------- .../docker/action/has_provisioner.rb | 12 +++------ templates/locales/providers_docker.yml | 4 +++ 5 files changed, 24 insertions(+), 31 deletions(-) diff --git a/lib/vagrant/action/builtin/mixin_provisioners.rb b/lib/vagrant/action/builtin/mixin_provisioners.rb index 42e7bf059..07f14eb73 100644 --- a/lib/vagrant/action/builtin/mixin_provisioners.rb +++ b/lib/vagrant/action/builtin/mixin_provisioners.rb @@ -50,7 +50,6 @@ module Vagrant before: provisioner.before, after: provisioner.after, communicator_required: provisioner.communicator_required, - id: provisioner.id } # Return the result diff --git a/lib/vagrant/action/builtin/provision.rb b/lib/vagrant/action/builtin/provision.rb index 168d15b2d..6c26121b7 100644 --- a/lib/vagrant/action/builtin/provision.rb +++ b/lib/vagrant/action/builtin/provision.rb @@ -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 diff --git a/plugins/providers/docker/action.rb b/plugins/providers/docker/action.rb index eda05cffb..f9180afd8 100644 --- a/plugins/providers/docker/action.rb +++ b/plugins/providers/docker/action.rb @@ -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 diff --git a/plugins/providers/docker/action/has_provisioner.rb b/plugins/providers/docker/action/has_provisioner.rb index 365a84ab4..fdf324ce5 100644 --- a/plugins/providers/docker/action/has_provisioner.rb +++ b/plugins/providers/docker/action/has_provisioner.rb @@ -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 diff --git a/templates/locales/providers_docker.yml b/templates/locales/providers_docker.yml index 0760b5567..88eb3448e 100644 --- a/templates/locales/providers_docker.yml +++ b/templates/locales/providers_docker.yml @@ -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: |-