class InsightsCloud::Async::InsightsResolutionsSync
Constants
- RULE_ID_REGEX
Public Instance Methods
logger()
click to toggle source
# File lib/insights_cloud/async/insights_resolutions_sync.rb, line 28 def logger action_logger end
plan()
click to toggle source
# File lib/insights_cloud/async/insights_resolutions_sync.rb, line 10 def plan unless cloud_auth_available? logger.debug('Cloud authentication is not available, skipping resolutions sync') return end plan_self end
run()
click to toggle source
# File lib/insights_cloud/async/insights_resolutions_sync.rb, line 19 def run InsightsResolution.transaction do InsightsResolution.delete_all rule_ids = relevant_rules api_response = query_insights_resolutions(rule_ids) unless rule_ids.empty? write_resolutions(api_response) if api_response end end
Private Instance Methods
query_insights_resolutions(rule_ids)
click to toggle source
# File lib/insights_cloud/async/insights_resolutions_sync.rb, line 34 def query_insights_resolutions(rule_ids) resolutions_response = execute_cloud_request( method: :post, url: InsightsCloud.resolutions_url, headers: { content_type: :json, }, payload: { issues: rule_ids, }.to_json ) JSON.parse(resolutions_response) end
relevant_rules()
click to toggle source
# File lib/insights_cloud/async/insights_resolutions_sync.rb, line 49 def relevant_rules InsightsRule.all.pluck(:rule_id).map { |id| InsightsCloud.remediation_rule_id(id) } end
to_resolution_hash(rule_id, resolution_hash)
click to toggle source
# File lib/insights_cloud/async/insights_resolutions_sync.rb, line 53 def to_resolution_hash(rule_id, resolution_hash) { rule_id: rule_id, description: resolution_hash['description'], resolution_type: resolution_hash['id'], needs_reboot: resolution_hash['needs_reboot'], resolution_risk: resolution_hash['resolution_risk'], } end
to_rule_id(resolution_rule_id)
click to toggle source
# File lib/insights_cloud/async/insights_resolutions_sync.rb, line 71 def to_rule_id(resolution_rule_id) RULE_ID_REGEX.match(resolution_rule_id).named_captures.fetch('id', resolution_rule_id) end
write_resolutions(response)
click to toggle source
# File lib/insights_cloud/async/insights_resolutions_sync.rb, line 63 def write_resolutions(response) all_resolutions = response.map do |rule_id, rule_details| rule_details['resolutions'].map { |resolution| to_resolution_hash(to_rule_id(rule_id), resolution) } end.flatten InsightsResolution.create(all_resolutions) end