class Httpapi

Public Class Methods

new(api_url, api_user, api_pass, api_ssl_verify, api_ssl_version, api_data_message, api_data_success, api_data_failed) click to toggle source
# File lib/chef/handler/Httpapi.rb, line 14
def initialize(api_url, api_user, api_pass, api_ssl_verify, api_ssl_version, api_data_message, api_data_success, api_data_failed)
    @api_url = api_url
    @api_ssl_verify = api_ssl_verify
    @api_ssl_version = api_ssl_version
    @api_user = api_user
    @api_pass = api_pass
    @api_data_message = api_data_message
    @api_data_success = api_data_success
    @api_data_failed = api_data_failed
  end

Public Instance Methods

formatted_run_list() click to toggle source
# File lib/chef/handler/Httpapi.rb, line 25
def formatted_run_list
  node.run_list.map { |r| r.type == :role ? r.name : r.to_s }.join(", ")
end
report() click to toggle source
# File lib/chef/handler/Httpapi.rb, line 29
def report
    uri = URI(@api_url)
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    http.set_debug_output $stderr
    http.use_ssl = true
    if @api_ssl_verify == "none"
      http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    end
    http.ssl_version = @api_ssl_version

    request = Net::HTTP::Post.new(uri.request_uri)
    request.basic_auth(@api_user, @api_pass)

    if run_status.success?
      api_data_info = { @api_data_message => "Chef successfull on #{node.name}\n\nrun_list:\n#{formatted_run_list}\n\ntotal_resources:\n#{run_status.all_resources.length}\n\nupdated_resources:\n#{run_status.updated_resources.length}\n\nelapsed_time:\n#{run_status.elapsed_time}" }
      api_data = @api_data_success.merge(api_data_info)
    else
      api_data_info = { @api_data_message => "Chef failed on #{node.name}\n\nrun_list:\n#{formatted_run_list}\n\nexception:\n#{run_status.exception}\n\nbacktrace:\n#{Array(backtrace).join('\n')}" }
      api_data = @api_data_failed.merge(api_data_info)
    end

    request.body = URI.encode_www_form(api_data)
    response = http.request request
    puts response
  end