Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/service_ping/submit_service.rb')
-rw-r--r--app/services/service_ping/submit_service.rb78
1 files changed, 43 insertions, 35 deletions
diff --git a/app/services/service_ping/submit_service.rb b/app/services/service_ping/submit_service.rb
index 89cb14e6fff..7fd0fb10b4b 100644
--- a/app/services/service_ping/submit_service.rb
+++ b/app/services/service_ping/submit_service.rb
@@ -18,41 +18,20 @@ module ServicePing
def execute
return unless ServicePing::ServicePingSettings.product_intelligence_enabled?
- start = Time.current
- begin
- usage_data = payload || ServicePing::BuildPayload.new.execute
- response = submit_usage_data_payload(usage_data)
- rescue StandardError => e
- return unless Gitlab::CurrentSettings.usage_ping_enabled?
-
- error_payload = {
- time: Time.current,
- uuid: Gitlab::CurrentSettings.uuid,
- hostname: Gitlab.config.gitlab.host,
- version: Gitlab.version_info.to_s,
- message: "#{e.message.presence || e.class} at #{e.backtrace[0]}",
- elapsed: (Time.current - start).round(1)
- }
- submit_payload({ error: error_payload }, path: ERROR_PATH)
+ start_time = Time.current
- usage_data = payload || Gitlab::Usage::ServicePingReport.for(output: :all_metrics_values)
- response = submit_usage_data_payload(usage_data)
- end
+ begin
+ response = submit_usage_data_payload
- version_usage_data_id =
- response.dig('conv_index', 'usage_data_id') || response.dig('dev_ops_score', 'usage_data_id')
+ raise SubmissionError, "Unsuccessful response code: #{response.code}" unless response.success?
- unless version_usage_data_id.is_a?(Integer) && version_usage_data_id > 0
- raise SubmissionError, "Invalid usage_data_id in response: #{version_usage_data_id}"
- end
+ handle_response(response)
+ submit_metadata_payload
+ rescue StandardError => e
+ submit_error_payload(e, start_time)
- unless skip_db_write
- raw_usage_data = save_raw_usage_data(usage_data)
- raw_usage_data.update_version_metadata!(usage_data_id: version_usage_data_id)
- ServicePing::DevopsReport.new(response).execute
+ raise
end
-
- submit_payload(metadata(usage_data), path: METADATA_PATH)
end
private
@@ -90,14 +69,43 @@ module ServicePing
)
end
- def submit_usage_data_payload(usage_data)
- raise SubmissionError, 'Usage data is blank' if usage_data.blank?
+ def submit_usage_data_payload
+ raise SubmissionError, 'Usage data payload is blank' if payload.blank?
+
+ submit_payload(payload)
+ end
+
+ def handle_response(response)
+ version_usage_data_id =
+ response.dig('conv_index', 'usage_data_id') || response.dig('dev_ops_score', 'usage_data_id')
- response = submit_payload(usage_data)
+ unless version_usage_data_id.is_a?(Integer) && version_usage_data_id > 0
+ raise SubmissionError, "Invalid usage_data_id in response: #{version_usage_data_id}"
+ end
- raise SubmissionError, "Unsuccessful response code: #{response.code}" unless response.success?
+ return if skip_db_write
+
+ raw_usage_data = save_raw_usage_data(payload)
+ raw_usage_data.update_version_metadata!(usage_data_id: version_usage_data_id)
+ ServicePing::DevopsReport.new(response).execute
+ end
+
+ def submit_error_payload(error, start_time)
+ current_time = Time.current
+ error_payload = {
+ time: current_time,
+ uuid: Gitlab::CurrentSettings.uuid,
+ hostname: Gitlab.config.gitlab.host,
+ version: Gitlab.version_info.to_s,
+ message: "#{error.message.presence || error.class} at #{error.backtrace[0]}",
+ elapsed: (current_time - start_time).round(1)
+ }
+
+ submit_payload({ error: error_payload }, path: ERROR_PATH)
+ end
- response
+ def submit_metadata_payload
+ submit_payload(metadata(payload), path: METADATA_PATH)
end
def save_raw_usage_data(usage_data)