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 'lib/gitlab/tracking.rb')
-rw-r--r--lib/gitlab/tracking.rb39
1 files changed, 34 insertions, 5 deletions
diff --git a/lib/gitlab/tracking.rb b/lib/gitlab/tracking.rb
index 45f836f10d3..52aee4d2d45 100644
--- a/lib/gitlab/tracking.rb
+++ b/lib/gitlab/tracking.rb
@@ -8,13 +8,35 @@ module Gitlab
end
def event(category, action, label: nil, property: nil, value: nil, context: [], project: nil, user: nil, namespace: nil, **extra) # rubocop:disable Metrics/ParameterLists
- contexts = [Tracking::StandardContext.new(project: project, user: user, namespace: namespace, **extra).to_context, *context]
+ action = action.to_s
+
+ project_id = project.is_a?(Integer) ? project : project&.id
+
+ contexts = [
+ Tracking::StandardContext.new(
+ namespace_id: namespace&.id,
+ plan_name: namespace&.actual_plan_name,
+ project_id: project_id,
+ user_id: user&.id,
+ **extra).to_context, *context
+ ]
+ track_struct_event(tracker, category, action, label: label, property: property, value: value, contexts: contexts)
+ end
+
+ def database_event(category, action, label: nil, property: nil, value: nil, context: [], project: nil, user: nil, namespace: nil, **extra) # rubocop:disable Metrics/ParameterLists
action = action.to_s
+ destination = Gitlab::Tracking::Destinations::DatabaseEventsSnowplow.new
+ contexts = [
+ Tracking::StandardContext.new(
+ namespace_id: namespace&.id,
+ plan_name: namespace&.actual_plan_name,
+ project_id: project&.id,
+ user_id: user&.id,
+ **extra).to_context, *context
+ ]
- tracker.event(category, action, label: label, property: property, value: value, context: contexts)
- rescue StandardError => error
- Gitlab::ErrorTracking.track_and_raise_for_dev_exception(error, snowplow_category: category, snowplow_action: action)
+ track_struct_event(destination, category, action, label: label, property: property, value: value, contexts: contexts)
end
def definition(basename, category: nil, action: nil, label: nil, property: nil, value: nil, context: [], project: nil, user: nil, namespace: nil, **extra) # rubocop:disable Metrics/ParameterLists
@@ -42,12 +64,19 @@ module Gitlab
def snowplow_micro_enabled?
Rails.env.development? && Gitlab.config.snowplow_micro.enabled
- rescue Settingslogic::MissingSetting
+ rescue GitlabSettings::MissingSetting
false
end
private
+ def track_struct_event(destination, category, action, label:, property:, value:, contexts:) # rubocop:disable Metrics/ParameterLists
+ destination
+ .event(category, action, label: label, property: property, value: value, context: contexts)
+ rescue StandardError => error
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(error, snowplow_category: category, snowplow_action: action)
+ end
+
def tracker
@tracker ||= if snowplow_micro_enabled?
Gitlab::Tracking::Destinations::SnowplowMicro.new