class Puppet::Configurer

Attributes

compile_time[R]
environment[R]

Public Instance Methods

apply_catalog(catalog, options) click to toggle source

Retrieve (optionally) and apply a catalog. If a catalog is passed in the options, then apply that one, otherwise retrieve it.

# File lib/puppet/configurer.rb, line 115
def apply_catalog(catalog, options)
  report = options[:report]
  report.configuration_version = catalog.version

  benchmark(:notice, "Finished catalog run") do
    catalog.apply(options)
  end

  report.finalize_report
  report
end
convert_catalog(result, duration) click to toggle source

Convert a plain resource catalog into our full host catalog.

# File lib/puppet/configurer.rb, line 75
def convert_catalog(result, duration)
  catalog = result.to_ral
  catalog.finalize
  catalog.retrieval_duration = duration
  catalog.write_class_file
  catalog.write_resource_file
  catalog
end
execute_postrun_command() click to toggle source
# File lib/puppet/configurer.rb, line 25
def execute_postrun_command
  execute_from_setting(:postrun_command)
end
execute_prerun_command() click to toggle source
# File lib/puppet/configurer.rb, line 29
def execute_prerun_command
  execute_from_setting(:prerun_command)
end
get_facts(options) click to toggle source
# File lib/puppet/configurer.rb, line 84
def get_facts(options)
  if options[:pluginsync]
    remote_environment_for_plugins = Puppet::Node::Environment.remote(@environment)
    download_plugins(remote_environment_for_plugins)
  end

  facts_hash = {}
  if Puppet::Resource::Catalog.indirection.terminus_class == :rest
    # This is a bit complicated.  We need the serialized and escaped facts,
    # and we need to know which format they're encoded in.  Thus, we
    # get a hash with both of these pieces of information.
    #
    # facts_for_uploading may set Puppet[:node_name_value] as a side effect
    facts_hash = facts_for_uploading
  end
  facts_hash
end
init_storage() click to toggle source

Initialize and load storage

# File lib/puppet/configurer.rb, line 34
def init_storage
    Puppet::Util::Storage.load
    @compile_time ||= Puppet::Util::Storage.cache(:configuration)[:compile_time]
rescue => detail
  Puppet.log_exception(detail, "Removing corrupt state file #{Puppet[:statefile]}: #{detail}")
  begin
    Puppet::FileSystem.unlink(Puppet[:statefile])
    retry
  rescue => detail
    raise Puppet::Error.new("Cannot remove #{Puppet[:statefile]}: #{detail}", detail)
  end
end
prepare_and_retrieve_catalog(options, query_options) click to toggle source
# File lib/puppet/configurer.rb, line 102
def prepare_and_retrieve_catalog(options, query_options)
  # set report host name now that we have the fact
  options[:report].host = Puppet[:node_name_value]

  unless catalog = (options.delete(:catalog) || retrieve_catalog(query_options))
    Puppet.err "Could not retrieve catalog; skipping run"
    return
  end
  catalog
end
retrieve_catalog(query_options) click to toggle source

Get the remote catalog, yo. Returns nil if no catalog can be found.

# File lib/puppet/configurer.rb, line 58
def retrieve_catalog(query_options)
  query_options ||= {}
  # First try it with no cache, then with the cache.
  unless (Puppet[:use_cached_catalog] and result = retrieve_catalog_from_cache(query_options)) or result = retrieve_new_catalog(query_options)
    if ! Puppet[:usecacheonfailure]
      Puppet.warning "Not using cache on failed catalog"
      return nil
    end
    result = retrieve_catalog_from_cache(query_options)
  end

  return nil unless result

  convert_catalog(result, @duration)
end
run(options = {}) click to toggle source

The code that actually runs the catalog. This just passes any options on to the catalog, which accepts :tags and :ignoreschedules.

# File lib/puppet/configurer.rb, line 130
def run(options = {})
  pool = Puppet::Network::HTTP::Pool.new(Puppet[:http_keepalive_timeout])
  begin
    Puppet.override(:http_pool => pool) do
      run_internal(options)
    end
  ensure
    pool.close
  end
end
save_last_run_summary(report) click to toggle source
# File lib/puppet/configurer.rb, line 255
def save_last_run_summary(report)
  mode = Puppet.settings.setting(:lastrunfile).mode
  Puppet::Util.replace_file(Puppet[:lastrunfile], mode) do |fh|
    fh.print YAML.dump(report.raw_summary)
  end
rescue => detail
  Puppet.log_exception(detail, "Could not save last run local report: #{detail}")
end
send_report(report) click to toggle source
# File lib/puppet/configurer.rb, line 247
def send_report(report)
  puts report.summary if Puppet[:summarize]
  save_last_run_summary(report)
  Puppet::Transaction::Report.indirection.save(report, nil, :environment => Puppet::Node::Environment.remote(@environment)) if Puppet[:report]
rescue => detail
  Puppet.log_exception(detail, "Could not send report: #{detail}")
end

Public Class Methods

new(factory = Puppet::Configurer::DownloaderFactory.new) click to toggle source
# File lib/puppet/configurer.rb, line 47
def initialize(factory = Puppet::Configurer::DownloaderFactory.new)
  Puppet.settings.use(:main, :ssl, :agent)

  @running = false
  @splayed = false
  @environment = Puppet[:environment]
  @transaction_uuid = SecureRandom.uuid
  @handler = Puppet::Configurer::PluginHandler.new(factory)
end
to_s() click to toggle source

Provide more helpful strings to the logging that the Agent does

# File lib/puppet/configurer.rb, line 21
def self.to_s
  "Puppet configuration client"
end