class SmartProxyDynflowCore::Callback::Request

Public Class Methods

send_to_foreman_tasks(callback_info, data) click to toggle source
# File lib/smart_proxy_dynflow_core/callback.rb, line 20
def self.send_to_foreman_tasks(callback_info, data)
  self.new.callback(self.prepare_payload(callback_info, data))
end

Private Class Methods

prepare_payload(callback, data) click to toggle source
# File lib/smart_proxy_dynflow_core/callback.rb, line 26
def self.prepare_payload(callback, data)
  { :callback => callback, :data => data }.to_json
end
ssl_options() click to toggle source
# File lib/smart_proxy_dynflow_core/callback.rb, line 35
def self.ssl_options
  return @ssl_options if defined? @ssl_options
  @ssl_options = {}
  settings = Settings.instance
  return @ssl_options unless URI.parse(settings.foreman_url).scheme == 'https'

  @ssl_options[:verify_ssl] = OpenSSL::SSL::VERIFY_PEER

  private_key_file = settings.foreman_ssl_key || settings.ssl_private_key
  if private_key_file
    private_key = File.read(private_key_file)
    @ssl_options[:ssl_client_key] = OpenSSL::PKey::RSA.new(private_key)
  end
  certificate_file = settings.foreman_ssl_cert || settings.ssl_certificate
  if certificate_file
    certificate = File.read(certificate_file)
    @ssl_options[:ssl_client_cert] = OpenSSL::X509::Certificate.new(certificate)
  end
  ca_file = settings.foreman_ssl_ca || settings.ssl_ca_file
  @ssl_options[:ssl_ca_file] = ca_file if ca_file
  @ssl_options
end

Public Instance Methods

callback(payload) click to toggle source
# File lib/smart_proxy_dynflow_core/callback.rb, line 12
def callback(payload)
  response = callback_resource.post(payload, :content_type => :json)
  if response.code.to_s != "200"
    raise "Failed performing callback to Foreman server: #{response.code} #{response.body}"
  end
  response
end

Private Instance Methods

callback_resource() click to toggle source
# File lib/smart_proxy_dynflow_core/callback.rb, line 30
def callback_resource
  @resource ||= RestClient::Resource.new(Settings.instance.foreman_url + '/foreman_tasks/api/tasks/callback',
                                         self.class.ssl_options)
end