Module: Vagrant::Action::Builtin::MixinProvisioners
- Included in:
- Provision, ProvisionerCleanup
- Defined in:
- lib/vagrant/action/builtin/mixin_provisioners.rb
Instance Method Summary collapse
-
#provisioner_instances(env) ⇒ Array<Provisioner, Hash>
This returns all the instances of the configured provisioners.
Instance Method Details
#provisioner_instances(env) ⇒ Array<Provisioner, Hash>
This returns all the instances of the configured provisioners. This is safe to call multiple times since it will cache the results.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/vagrant/action/builtin/mixin_provisioners.rb', line 9 def provisioner_instances(env) return @_provisioner_instances if @_provisioner_instances # Make the mapping that'll keep track of provisioner => type @_provisioner_types = {} # Get all the configured provisioners @_provisioner_instances = env[:machine].config.vm.provisioners.map do |provisioner| # Instantiate the provisioner klass = Vagrant.plugin("2").manager.provisioners[provisioner.type] # This can happen in the case the configuration isn't validated. next nil if !klass result = klass.new(env[:machine], provisioner.config) # Store in the type map so that --provision-with works properly @_provisioner_types[result] = provisioner.type # Set top level provisioner name to provisioner configs name if top level name not set. # This is mostly for handling the shell provisioner, if a user has set its name like: # # config.vm.provision "shell", name: "my_provisioner" # # Where `name` is a shell config option, not a top level provisioner class option # # Note: `name` is set to a symbol, since it is converted to one via #Config::VM.provision provisioner_name = provisioner.name if !provisioner_name if provisioner.config.respond_to?(:name) && provisioner.config.name provisioner_name = provisioner.config.name.to_sym end else provisioner_name = provisioner_name.to_sym end # Build up the options = { name: provisioner_name, run: provisioner.run, before: provisioner.before, after: provisioner.after, communicator_required: provisioner.communicator_required, } # Return the result [result, ] end @_provisioner_instances = sort_provisioner_instances(@_provisioner_instances) return @_provisioner_instances.compact end |