class InsightsCloud::Async::InsightsRulesSync

Public Instance Methods

logger() click to toggle source
# File lib/insights_cloud/async/insights_rules_sync.rb, line 33
def logger
  action_logger
end
plan() click to toggle source
# File lib/insights_cloud/async/insights_rules_sync.rb, line 8
def plan
  plan_self
  plan_resolutions
end
plan_resolutions() click to toggle source
# File lib/insights_cloud/async/insights_rules_sync.rb, line 13
def plan_resolutions
  plan_action InsightsResolutionsSync
end
run() click to toggle source
# File lib/insights_cloud/async/insights_rules_sync.rb, line 17
def run
  offset = 0
  InsightsRule.transaction do
    InsightsRule.delete_all
    loop do
      api_response = query_insights_rules(offset)
      results = RulesResult.new(api_response)
      logger.debug("Downloaded #{offset + results.count} of #{results.total}")
      write_rules_page(results.rules)
      offset += results.count
      output[:rules_count] = results.total
      break if offset >= results.total
    end
  end
end

Private Instance Methods

query_insights_rules(offset) click to toggle source
# File lib/insights_cloud/async/insights_rules_sync.rb, line 39
def query_insights_rules(offset)
  rules_response = RestClient::Request.execute(
    method: :get,
    url: InsightsCloud.rules_url(offset: offset),
    verify_ssl: ForemanRhCloud.verify_ssl_method,
    proxy: ForemanRhCloud.transformed_http_proxy_string(logger: logger),
    headers: {
      Authorization: "Bearer #{rh_credentials}",
    }
  )

  JSON.parse(rules_response)
end
to_rule_hash(rule_hash) click to toggle source
# File lib/insights_cloud/async/insights_rules_sync.rb, line 59
def to_rule_hash(rule_hash)
  {
    rule_id: rule_hash['rule_id'],
    description:  rule_hash['description'],
    category_name:  rule_hash.dig('category', 'name'),
    impact_name:  rule_hash.dig('impact', 'name'),
    summary:  rule_hash['summary'],
    generic:  rule_hash['generic'],
    reason:  rule_hash['reason'],
    total_risk:  rule_hash['total_risk'],
    reboot_required:  rule_hash['reboot_required'],
    more_info:  rule_hash['more_info'],
    rating:  rule_hash['rating'],
  }
end
write_rules_page(rules) click to toggle source
# File lib/insights_cloud/async/insights_rules_sync.rb, line 53
def write_rules_page(rules)
  rules_attributes = rules.map { |rule| to_rule_hash(rule) }

  InsightsRule.create(rules_attributes)
end