Sha256: 9ca042aead8d00f4419f69320384e521f220be354ac85cc53b7934361c50b960

Contents?: true

Size: 1.69 KB

Versions: 40

Compression:

Stored size: 1.69 KB

Contents

require 'log4r'

module Vagrant
  module Config
    class VMConfig < Base
      # Represents a single configured provisioner for a VM.
      class Provisioner
        attr_reader :shortcut
        attr_reader :provisioner
        attr_reader :config

        def initialize(shortcut, options=nil, &block)
          @logger = Log4r::Logger.new("vagrant::config::vm::provisioner")
          @logger.debug("Provisioner config: #{shortcut}")
          @shortcut = shortcut
          @provisioner = shortcut
          @provisioner = Vagrant.provisioners.get(shortcut) if shortcut.is_a?(Symbol)
          @config = nil

          @logger.info("Provisioner class: #{provisioner}")
          configure(options, &block) if @provisioner
        end

        # Configures the provisioner if it can (if it is valid).
        def configure(options=nil, &block)
          config_class = @provisioner.config_class
          return if !config_class

          @logger.debug("Configuring provisioner with: #{config_class}")
          @config = config_class.new
          @config.set_options(options) if options
          block.call(@config) if block
        end

        def validate(env, errors)
          if !provisioner
            # If we don't have a provisioner then the whole thing is invalid.
            errors.add(I18n.t("vagrant.config.vm.provisioner_not_found", :shortcut => shortcut))
            return
          end

          if !(provisioner <= Provisioners::Base)
            errors.add(I18n.t("vagrant.config.vm.provisioner_invalid_class", :shortcut => shortcut))
          end

          # Pass on validation to the provisioner config
          config.validate(env, errors) if config
        end
      end
    end
  end
end

Version data entries

40 entries across 40 versions & 6 rubygems

Version Path
bmhatfield-vagrant-1.0.10 lib/vagrant/config/vm/provisioner.rb
bmhatfield-vagrant-1.0.9 lib/vagrant/config/vm/provisioner.rb
bmhatfield-vagrant-1.0.8 lib/vagrant/config/vm/provisioner.rb
bmhatfield-vagrant-1.0.7 lib/vagrant/config/vm/provisioner.rb
vagrantup-1.0.7 lib/vagrant/config/vm/provisioner.rb
vagrantup-1.0.6 lib/vagrant/config/vm/provisioner.rb
vagrantup-1.0.5 lib/vagrant/config/vm/provisioner.rb
vagrantup-1.0.4 lib/vagrant/config/vm/provisioner.rb
vagrantup-1.0.3 lib/vagrant/config/vm/provisioner.rb
vagrantup-1.0.2 lib/vagrant/config/vm/provisioner.rb
vagrantup-1.0.1 lib/vagrant/config/vm/provisioner.rb
vagrantup-1.0.0 lib/vagrant/config/vm/provisioner.rb
vagrantup-0.9.99.2 lib/vagrant/config/vm/provisioner.rb
vagrantup-0.9.99.1 lib/vagrant/config/vm/provisioner.rb
vagrantup-0.9.7 lib/vagrant/config/vm/provisioner.rb
vagrantup-0.9.6 lib/vagrant/config/vm/provisioner.rb
vagrantup-0.9.5 lib/vagrant/config/vm/provisioner.rb
vagrantup-0.9.4 lib/vagrant/config/vm/provisioner.rb
vagrantup-0.9.3 lib/vagrant/config/vm/provisioner.rb
vagrantup-0.9.2 lib/vagrant/config/vm/provisioner.rb