class Proxy::Dynflow::Callback::Request
Public Class Methods
send_to_foreman_tasks(callback_info, data)
click to toggle source
# File lib/smart_proxy_dynflow/callback.rb, line 7 def send_to_foreman_tasks(callback_info, data) self.new.callback(prepare_payload(callback_info, data)) end
ssl_options()
click to toggle source
# File lib/smart_proxy_dynflow/callback.rb, line 11 def ssl_options return @ssl_options if defined? @ssl_options @ssl_options = {} settings = Proxy::SETTINGS 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
Private Class Methods
prepare_payload(callback, data)
click to toggle source
rubocop:enable Metrics/PerceivedComplexity
# File lib/smart_proxy_dynflow/callback.rb, line 37 def prepare_payload(callback, data) { :callback => callback, :data => data }.to_json end
Public Instance Methods
callback(payload)
click to toggle source
# File lib/smart_proxy_dynflow/callback.rb, line 42 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/callback.rb, line 52 def callback_resource @resource ||= RestClient::Resource.new(Proxy::SETTINGS.foreman_url + '/foreman_tasks/api/tasks/callback', self.class.ssl_options) end