diff --git a/config/metrics/schema/internal_events.json b/config/metrics/schema/internal_events.json index d35a2fa22d75e1ad6e3448576e02d82745d3f133..d09219392736f14fd9915b69c7578123e0872277 100644 --- a/config/metrics/schema/internal_events.json +++ b/config/metrics/schema/internal_events.json @@ -9,21 +9,6 @@ "then": { "properties": { "instrumentation_class": false, - "options": { - "type": "object", - "properties": { - "events": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "events" - ], - "additionalProperties": false - }, "events": { "type": "array", "items": { @@ -49,8 +34,7 @@ } }, "required": [ - "events", - "options" + "events" ] } } diff --git a/doc/development/internal_analytics/internal_event_instrumentation/migration.md b/doc/development/internal_analytics/internal_event_instrumentation/migration.md index b37932764b43dc5490cd625dab59846f1dcc6749..db57eb4886b3a7564cb880f0723224ce9f8734c1 100644 --- a/doc/development/internal_analytics/internal_event_instrumentation/migration.md +++ b/doc/development/internal_analytics/internal_event_instrumentation/migration.md @@ -137,7 +137,8 @@ To start using Internal Events Tracking, follow these steps: ``` Use `project.id` or `namespace.id` instead of `user.id` if your metric is counting something other than unique users. -1. Call `InternalEvents.tract_event` instead of `HLLRedisCounter.track_event`: +1. Remove the `options` section from both metric definition files. +1. Call `InternalEvents.track_event` instead of `HLLRedisCounter.track_event`: ```diff - Gitlab::UsageDataCounters::HLLRedisCounter.track_event(:git_write_action, values: current_user.id) diff --git a/scripts/internal_events/cli/helpers/metric_options.rb b/scripts/internal_events/cli/helpers/metric_options.rb index 01512115e05d7acf60c4de315cfdb031dfb68b15..c2f2c4f81cddd1219d7ba451062e2161e3337c7d 100755 --- a/scripts/internal_events/cli/helpers/metric_options.rb +++ b/scripts/internal_events/cli/helpers/metric_options.rb @@ -71,9 +71,11 @@ def get_existing_metrics_for_events(events) fields = InternalEventsCli::NEW_METRIC_FIELDS.map(&:to_s) metric = Metric.new(**details.slice(*fields)) - next unless metric.actions - metric if (metric.actions & actions).any? + metric_actions = metric.events&.map { |event| event['name'] } + next unless metric_actions + + metric if (metric_actions & actions).any? end end diff --git a/scripts/internal_events/cli/metric.rb b/scripts/internal_events/cli/metric.rb index 0d39b0b4e2b578ca53fce0ed3c509cbe368d2510..5bb46d3d1363fd3d9c2a1daf0d1d9c1892573882 100755 --- a/scripts/internal_events/cli/metric.rb +++ b/scripts/internal_events/cli/metric.rb @@ -18,7 +18,6 @@ module InternalEventsCli :product_category, :distribution, :tier, - :options, :events ].freeze @@ -43,7 +42,7 @@ module InternalEventsCli performance_indicator_type: [] }.freeze - Metric = Struct.new(*NEW_METRIC_FIELDS, *ADDITIONAL_METRIC_FIELDS, :identifier, keyword_init: true) do + Metric = Struct.new(*NEW_METRIC_FIELDS, *ADDITIONAL_METRIC_FIELDS, :identifier, :actions, keyword_init: true) do def formatted_output METRIC_DEFAULTS .merge(to_h.compact) @@ -102,7 +101,7 @@ def key_path_prefix end def actions - options&.dig('events')&.sort || [] + self[:actions] || [] end def identifier_prefix diff --git a/scripts/internal_events/cli/metric_definer.rb b/scripts/internal_events/cli/metric_definer.rb index 7688f03200fc3961a6c1c6f9b3e12d8bb17d92a7..7d52517485dfe3c00fed9706612b7e43e0a53325 100755 --- a/scripts/internal_events/cli/metric_definer.rb +++ b/scripts/internal_events/cli/metric_definer.rb @@ -114,9 +114,9 @@ def prompt_for_metrics @metrics = cli.select('Which metrics do you want to add?', eligible_metrics, **select_opts) - assign_shared_attrs(:options, :milestone) do + assign_shared_attrs(:actions, :milestone) do { - options: { 'events' => selected_events.map(&:action) }, + actions: selected_events.map(&:action).sort, milestone: MILESTONE } end diff --git a/spec/fixtures/scripts/internal_events/metrics/ee_total_28d_single_event.yml b/spec/fixtures/scripts/internal_events/metrics/ee_total_28d_single_event.yml index 5238e997044fd03bf117cf9fd775315d2458b140..647fe9e04b2ae55c419604de60c9ac8d038fdd7c 100644 --- a/spec/fixtures/scripts/internal_events/metrics/ee_total_28d_single_event.yml +++ b/spec/fixtures/scripts/internal_events/metrics/ee_total_28d_single_event.yml @@ -17,8 +17,5 @@ distribution: tier: - premium - ultimate -options: - events: - - internal_events_cli_used events: - name: internal_events_cli_used diff --git a/spec/fixtures/scripts/internal_events/metrics/ee_total_7d_single_event.yml b/spec/fixtures/scripts/internal_events/metrics/ee_total_7d_single_event.yml index fdbf137f6994d646f11fc2548a18eebf457cafda..700b461061824ac40a596a82c61d20606b241fcd 100644 --- a/spec/fixtures/scripts/internal_events/metrics/ee_total_7d_single_event.yml +++ b/spec/fixtures/scripts/internal_events/metrics/ee_total_7d_single_event.yml @@ -17,8 +17,5 @@ distribution: tier: - premium - ultimate -options: - events: - - internal_events_cli_used events: - name: internal_events_cli_used diff --git a/spec/fixtures/scripts/internal_events/metrics/ee_total_single_event.yml b/spec/fixtures/scripts/internal_events/metrics/ee_total_single_event.yml index e928869ca9aa2bb1dc5a240466a881a3bbff873f..b9c918e9a9dddc4ed91ed24c669edaeedb43355c 100644 --- a/spec/fixtures/scripts/internal_events/metrics/ee_total_single_event.yml +++ b/spec/fixtures/scripts/internal_events/metrics/ee_total_single_event.yml @@ -17,8 +17,5 @@ distribution: tier: - premium - ultimate -options: - events: - - internal_events_cli_used events: - name: internal_events_cli_used diff --git a/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_28d.yml b/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_28d.yml index 4d40e2122cbfd797dabe00ef613e8027f38935b3..a0aa259e2073138e515f9cc2dccf1dbbdbcd07ee 100644 --- a/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_28d.yml +++ b/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_28d.yml @@ -19,9 +19,6 @@ tier: - free - premium - ultimate -options: - events: - - random_name events: - name: random_name unique: user.id diff --git a/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_7d.yml b/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_7d.yml index 166cef9041235cc107fc4dac6e4ba219875fd9f0..d3e3f91e51a70d815b92950cdcb109a45bbd9251 100644 --- a/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_7d.yml +++ b/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_7d.yml @@ -19,9 +19,6 @@ tier: - free - premium - ultimate -options: - events: - - random_name events: - name: random_name unique: user.id diff --git a/spec/fixtures/scripts/internal_events/metrics/project_id_28d_multiple_events.yml b/spec/fixtures/scripts/internal_events/metrics/project_id_28d_multiple_events.yml index 122043e6cc0268317248fd21de83b0ec5ae2934f..09f23b07b17bc8448f4479c771609dee8a658f0c 100644 --- a/spec/fixtures/scripts/internal_events/metrics/project_id_28d_multiple_events.yml +++ b/spec/fixtures/scripts/internal_events/metrics/project_id_28d_multiple_events.yml @@ -19,10 +19,6 @@ tier: - free - premium - ultimate -options: - events: - - internal_events_cli_closed - - internal_events_cli_used events: - name: internal_events_cli_closed unique: project.id diff --git a/spec/fixtures/scripts/internal_events/metrics/project_id_7d_multiple_events.yml b/spec/fixtures/scripts/internal_events/metrics/project_id_7d_multiple_events.yml index 11a4ba41c07d9147ae98df40cc084fa3a073ed7b..5b6ebcfb11a1a00a44525d64cf1ec769106909de 100644 --- a/spec/fixtures/scripts/internal_events/metrics/project_id_7d_multiple_events.yml +++ b/spec/fixtures/scripts/internal_events/metrics/project_id_7d_multiple_events.yml @@ -19,10 +19,6 @@ tier: - free - premium - ultimate -options: - events: - - internal_events_cli_closed - - internal_events_cli_used events: - name: internal_events_cli_closed unique: project.id diff --git a/spec/fixtures/scripts/internal_events/metrics/total_single_event.yml b/spec/fixtures/scripts/internal_events/metrics/total_single_event.yml index 038fc738f256a13fbc992a5182b509d9555bbccd..a4f8ffb54c16ee9922958d312197d7f8446a2a63 100644 --- a/spec/fixtures/scripts/internal_events/metrics/total_single_event.yml +++ b/spec/fixtures/scripts/internal_events/metrics/total_single_event.yml @@ -19,8 +19,5 @@ tier: - free - premium - ultimate -options: - events: - - internal_events_cli_used events: - name: internal_events_cli_used diff --git a/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event.yml b/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event.yml index b27e69bd43b4a6e9dd096d23ca398220c105642b..1b96ecd40b1a74439099d09a7b270613072c2aab 100644 --- a/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event.yml +++ b/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event.yml @@ -19,9 +19,6 @@ tier: - free - premium - ultimate -options: - events: - - internal_events_cli_used events: - name: internal_events_cli_used unique: user.id diff --git a/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event.yml b/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event.yml index e08733a6bc9c45882d811196a2a20980098288d4..5e34991a87d55faf9141a9c4a5f4832cd512e7a7 100644 --- a/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event.yml +++ b/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event.yml @@ -19,9 +19,6 @@ tier: - free - premium - ultimate -options: - events: - - internal_events_cli_used events: - name: internal_events_cli_used unique: user.id diff --git a/spec/scripts/internal_events/cli_spec.rb b/spec/scripts/internal_events/cli_spec.rb index 3bbda97d4b3d0103e165d78b93e7f782f8179eeb..1c7a5e924a2fb4d8adc45c683738fe6cfcad1e70 100644 --- a/spec/scripts/internal_events/cli_spec.rb +++ b/spec/scripts/internal_events/cli_spec.rb @@ -1,9 +1,8 @@ # frozen_string_literal: true -require 'fast_spec_helper' +require 'spec_helper' require 'tty/prompt/test' require_relative '../../../scripts/internal_events/cli' -require_relative '../../support/helpers/wait_helpers' RSpec.describe Cli, feature_category: :service_ping do include WaitHelpers