Class: Dri::Report
- Inherits:
-
Object
- Object
- Dri::Report
- Includes:
- Utils::Constants::Triage::Labels
- Defined in:
- lib/dri/report.rb
Overview
rubocop:disable Metrics/ClassLength
Constant Summary
Constants included from Utils::Constants::Triage::Labels
Utils::Constants::Triage::Labels::FAILURE, Utils::Constants::Triage::Labels::FAILURE_NEW, Utils::Constants::Triage::Labels::FOUND, Utils::Constants::Triage::Labels::INCIDENT, Utils::Constants::Triage::Labels::QA, Utils::Constants::Triage::Labels::QUALITY, Utils::Constants::Triage::Labels::QUARANTINE, Utils::Constants::Triage::Labels::SERVICE
Instance Attribute Summary collapse
-
#failures ⇒ Object
readonly
Returns the value of attribute failures.
-
#header ⇒ Object
readonly
Returns the value of attribute header.
-
#incidents ⇒ Object
readonly
Returns the value of attribute incidents.
-
#labels ⇒ Object
readonly
Returns the value of attribute labels.
-
#labels_incidents ⇒ Object
readonly
Returns the value of attribute labels_incidents.
Instance Method Summary collapse
- #add_failure(failure, actions_opts = []) ⇒ Object
- #add_incident(incident) ⇒ Object
-
#initialize(config) ⇒ Report
constructor
A new instance of Report.
- #set_header(timezone, username) ⇒ Object
Constructor Details
#initialize(config) ⇒ Report
Returns a new instance of Report.
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/dri/report.rb', line 12 def initialize(config) @labels = ['Title', 'Issue', 'Pipelines', 'Stack Trace', 'Actions'] @labels_incidents = %w[Incident Service Status URL] @failures = [] @incidents = [] @date = Date.today @today = Date.today.strftime("%Y-%m-%d") @weekday = Date.today.strftime("%A") @header = nil @api_client = ApiClient.new(config) end |
Instance Attribute Details
#failures ⇒ Object (readonly)
Returns the value of attribute failures.
10 11 12 |
# File 'lib/dri/report.rb', line 10 def failures @failures end |
#header ⇒ Object (readonly)
Returns the value of attribute header.
10 11 12 |
# File 'lib/dri/report.rb', line 10 def header @header end |
#incidents ⇒ Object (readonly)
Returns the value of attribute incidents.
10 11 12 |
# File 'lib/dri/report.rb', line 10 def incidents @incidents end |
#labels ⇒ Object (readonly)
Returns the value of attribute labels.
10 11 12 |
# File 'lib/dri/report.rb', line 10 def labels @labels end |
#labels_incidents ⇒ Object (readonly)
Returns the value of attribute labels_incidents.
10 11 12 |
# File 'lib/dri/report.rb', line 10 def labels_incidents @labels_incidents end |
Instance Method Details
#add_failure(failure, actions_opts = []) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/dri/report.rb', line 44 def add_failure(failure, actions_opts = []) project_id = failure["project_id"] iid = failure["iid"] title = format_title(failure["title"]) link = failure["web_url"] labels = failure["labels"] description = failure["description"] = @api_client.(project_id, iid) emoji = classify_failure_emoji(failure["created_at"]) emojified_link = "#{emoji} #{link}" stack_blob = if description.empty? "No stack trace found" else description.split("### Stack trace").last.gsub(/\n|`|!|\[|\]/, '').squeeze(" ")[0...250] end stack_trace = ":link:[`#{stack_blob}...`](#{link}#stack-trace)" failure_type = filter_failure_type_labels(labels) assigned_status = assigned?(failure["assignees"]) pipelines = format_pipelines(labels) actions_status = actions_status_template(failure_type, assigned_status, actions_opts) actions_fixes = actions_fixes_template() @failures << [title, emojified_link, pipelines, stack_trace, "#{actions_status}#{actions_fixes}"] end |
#add_incident(incident) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/dri/report.rb', line 29 def add_incident(incident) title = incident["title"] url = incident["web_url"] labels = incident["labels"] status = 'N/A' service = 'N/A' labels.each do |label| status = label.gsub!(INCIDENT, ' ').to_s if label.include? INCIDENT service = label.gsub!(SERVICE, ' ').to_s if label.include? SERVICE end @incidents << [title, service, status, url] end |
#set_header(timezone, username) ⇒ Object
25 26 27 |
# File 'lib/dri/report.rb', line 25 def set_header(timezone, username) @header = "# #{timezone}, #{@weekday} - #{@date}\n posted by: @#{username}" end |