Allow provisioner instance names to be specified for `up` and `reload` commands and option `--provision-with`

Ref: https://github.com/mitchellh/vagrant/issues/5139
This commit is contained in:
Jon Burgess 2015-07-17 14:26:13 +10:00
parent bac5d039db
commit 209556c3cd
3 changed files with 18 additions and 9 deletions

View File

@ -30,7 +30,7 @@ module VagrantPlugins
return if !argv
# Validate the provisioners
validate_provisioner_flags!(options)
validate_provisioner_flags!(options, argv)
@logger.debug("'reload' each target VM...")
machines = []

View File

@ -48,7 +48,7 @@ module VagrantPlugins
return if !argv
# Validate the provisioners
validate_provisioner_flags!(options)
validate_provisioner_flags!(options, argv)
# Go over each VM and bring it up
@logger.debug("'Up' each target VM...")

View File

@ -26,13 +26,22 @@ module VagrantPlugins
# This validates the provisioner flags and raises an exception
# if there are invalid ones.
def validate_provisioner_flags!(options)
(options[:provision_types] || []).each do |type|
klass = Vagrant.plugin("2").manager.provisioners[type]
if !klass
raise Vagrant::Errors::ProvisionerFlagInvalid,
name: type.to_s
end
def validate_provisioner_flags!(options, argv)
provisioner_instance_names = []
with_target_vms(argv) do |machine|
provisioner_instance_names << machine.config.vm.provisioners.map(&:name)
end
provisioner_instance_names.flatten!.uniq!
if (provisioner_instance_names & options[:provision_types]).empty?
(options[:provision_types] || []).each do |type|
klass = Vagrant.plugin("2").manager.provisioners[type]
if !klass
raise Vagrant::Errors::ProvisionerFlagInvalid,
name: type.to_s
end
end
end
end
end