Class: ForemanGutterball::GutterballService

Inherits:
Katello::HttpResource
  • Object
show all
Defined in:
app/services/foreman_gutterball/gutterball_service.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeGutterballService

Returns a new instance of GutterballService.



3
4
5
6
7
8
9
10
11
12
13
# File 'app/services/foreman_gutterball/gutterball_service.rb', line 3

def initialize
  cfg = SETTINGS.with_indifferent_access
  url = cfg['foreman_gutterball']['url']
  @uri = URI.parse(url)
  self.prefix = @uri.path
  self.site = "#{@uri.scheme}://#{@uri.host}:#{@uri.port}"
  self.class.site = site
  self.consumer_secret = cfg[:oauth_consumer_secret]
  self.consumer_key = cfg[:oauth_consumer_key]
  self.ca_cert_file = cfg[:ca_cert_file]
end

Class Method Details

.default_headersObject



15
16
17
18
19
# File 'app/services/foreman_gutterball/gutterball_service.rb', line 15

def self.default_headers
  { 'accept' => 'application/json',
    'accept-language' => I18n.locale,
    'content-type' => 'application/json' }
end

.loggerObject



21
22
23
# File 'app/services/foreman_gutterball/gutterball_service.rb', line 21

def self.logger
  ::Logging.logger['gutterball_service']
end

Instance Method Details

#hash_to_query(query_parameters) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'app/services/foreman_gutterball/gutterball_service.rb', line 30

def hash_to_query(query_parameters)
  query_parameters.reduce('?') do |result, (current_key, current_value) |
    result << '&' unless result == '?'
    if current_value.is_a?(Array)
      result << current_value.map { |value| "#{current_key}=#{self.class.url_encode(value)}" }.join('&')
    else
      result << "#{current_key}=#{self.class.url_encode(current_value)}"
    end
  end
end

#report(report_key, query_params) ⇒ Object



41
42
43
44
45
46
47
# File 'app/services/foreman_gutterball/gutterball_service.rb', line 41

def report(report_key, query_params)
  format_query(query_params)
  path = self.class.join_path(prefix, 'reports', report_key, 'run')
  raw = get_with_params(path, default_headers, hash_to_query(query_params))
  resp = JSON.parse(raw)
  send("format_#{report_key}_response", resp)
end

#report_details(report_key) ⇒ Object



25
26
27
28
# File 'app/services/foreman_gutterball/gutterball_service.rb', line 25

def report_details(report_key)
  path = self.class.join_path(prefix, 'reports', report_key)
  JSON.parse self.class.get(path, default_headers)
end