Sha256: 04f1b0c60b393de50874fb488f2c8978933e169e3677ce0698d1180dd868e140

Contents?: true

Size: 1.58 KB

Versions: 2

Compression:

Stored size: 1.58 KB

Contents

module VagrantPlugins
  module Chef
    class Installer
      def initialize(machine, options = {})
        @machine    = machine
        @product    = options.fetch(:product)
        @channel    = options.fetch(:channel)
        @version    = options.fetch(:version)
        @force      = options.fetch(:force)
        @options    = options.dup
      end

      # This handles verifying the Chef installation, installing it if it was
      # requested, and so on. This method will raise exceptions if things are
      # wrong.
      def ensure_installed
        # If the guest cannot check if Chef is installed, just exit printing a
        # warning...
        if !@machine.guest.capability?(:chef_installed)
          @machine.ui.warn(I18n.t("vagrant.chef_cant_detect"))
          return
        end

        if !should_install_chef?
          @machine.ui.info(I18n.t("vagrant.chef_already_installed",
            version: @version.to_s))
          return
        end

        @machine.ui.detail(I18n.t("vagrant.chef_installing",
          version: @version.to_s))
        @machine.guest.capability(:chef_install, @product, @version, @channel, @options)

        if !@machine.guest.capability(:chef_installed, @version)
          raise Provisioner::Base::ChefError, :install_failed
        end
      end

      # Determine if Chef should be installed. Chef is installed if the "force"
      # option is given or if the guest does not have Chef installed at the
      # proper version.
      def should_install_chef?
        @force || !@machine.guest.capability(:chef_installed, @version)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vagrant-unbundled-1.8.1.2 plugins/provisioners/chef/installer.rb
vagrant-unbundled-1.8.1.1 plugins/provisioners/chef/installer.rb