Class: ServicePing::DevopsReport

Inherits:
Object
  • Object
show all
Defined in:
lib/service_ping/devops_report.rb

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ DevopsReport

Returns a new instance of DevopsReport.



5
6
7
# File 'lib/service_ping/devops_report.rb', line 5

def initialize(data)
  @data = data
end

Instance Method Details

#executeObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/service_ping/devops_report.rb', line 9

def execute
  # `conv_index` was previously named `dev_ops_score` in
  # version-gitlab-com, so we check both for backwards compatibility.
  metrics = @data['conv_index'] || @data['dev_ops_score']

  # Do not attempt to save a report for the first Service Ping
  # response for a given GitLab instance, which comes without
  # metrics.
  return if metrics.keys == ['usage_data_id']

  report = DevOpsReport::Metric.create(
    metrics.slice(*DevOpsReport::Metric::METRICS)
  )

  unless report.persisted?
    Gitlab::ErrorTracking.track_and_raise_for_dev_exception(
      ActiveRecord::RecordInvalid.new(report)
    )
  end
end