class Chef::Application::Local

Attributes

chef_solo_json[R]

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/chef/application/local.rb, line 114
def initialize
  super
end

Public Instance Methods

reconfigure() click to toggle source
Calls superclass method
# File lib/chef/application/local.rb, line 118
def reconfigure
  super

  Chef::Config[:solo] = true

  if Chef::Config[:noop]
    require 'tvdinner/noop'
  end

  if Chef::Config[:json_attribs]
    begin
      json_io = case Chef::Config[:json_attribs]
                when /^(http|https):\/\//
                  @rest = Chef::REST.new(Chef::Config[:json_attribs], nil, nil)
                  @rest.get_rest(Chef::Config[:json_attribs], true).open
                else
                  open(Chef::Config[:json_attribs])
                end
    rescue SocketError => error
      Chef::Application.fatal!("I cannot connect to #{Chef::Config[:json_attribs]}", 2)
    rescue Errno::ENOENT => error
      Chef::Application.fatal!("I cannot find #{Chef::Config[:json_attribs]}", 2)
    rescue Errno::EACCES => error
      Chef::Application.fatal!("Permissions are incorrect on #{Chef::Config[:json_attribs]}. Please chmod a+r #{Chef::Config[:json_attribs]}", 2)
    rescue Exception => error
      Chef::Application.fatal!("Got an unexpected error reading #{Chef::Config[:json_attribs]}: #{error.message}", 2)
    end

    begin
      @chef_client_json = Chef::JSONCompat.from_json(json_io.read)
      json_io.close unless json_io.closed?
    rescue JSON::ParserError => error
      Chef::Application.fatal!("Could not parse the provided JSON file (#{Chef::Config[:json_attribs]})!: " + error.message, 2)
    end
  end

  @chef_client_json ||= Chef::JSONCompat.from_json("{}")

  @chef_client_json[:release_dir] ||= (ENV['RELEASE_DIR'] || ENV['PWD'])
  @chef_client_json[:project_dir] ||= (ENV['PROJECT_DIR'] || @chef_client_json[:release_dir])
end
run_application() click to toggle source
# File lib/chef/application/local.rb, line 163
def run_application
  loop do
    begin
      run_chef_client
      Chef::Application.exit! "Exiting", 0
    rescue SystemExit => e
      raise
    rescue Exception => e
      Chef::Application.debug_stacktrace(e)
      Chef::Application.fatal!("#{e.class}: #{e.message}", 1)
    end
  end
end
setup_application() click to toggle source
# File lib/chef/application/local.rb, line 160
def setup_application
end