class Kitchen::Provisioner::ChefZero

@author Fletcher Nichol <fnichol@nichol.ca>
to ChefInfra. It also supports enterprise gem delegation.
This provisioner is maintained for backward compatibility and delegates
Chef Zero provisioner (deprecated, use ChefInfra instead).

def self.new(config = {})

Returns:
  • (ChefZero) - provisioner instance

Parameters:
  • config (Hash) -- configuration hash
def self.new(config = {})
  enterprise_gem = ChefBase.enterprise_gem_available?
  if enterprise_gem
    begin
      omnibus_chef_class = self
      require "#{enterprise_gem}/provisioner/chef_zero"
      enterprise_class = Kitchen::Provisioner.const_get(:ChefZero)
      if enterprise_class != omnibus_chef_class
        if config[:instance] && config[:instance].respond_to?(:logger)
          config[:instance].logger.info("Using #{enterprise_gem} implementation of ChefZero provisioner")
        end
        return enterprise_class.allocate.tap { |instance| instance.send(:initialize, config) }
      end
    rescue LoadError, NameError => e
      if config[:instance] && config[:instance].respond_to?(:logger)
        config[:instance].logger.debug("Could not load enterprise provisioner, using kitchen-omnibus-chef: #{e.message}")
      end
    end
  end
  # Fall back to ChefInfra implementation (ChefZero is just an alias)
  allocate.tap { |instance| instance.send(:initialize, config) }
end