From 6eca88ce530d93dea569a083ec19ea394f17d59c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Wielich?= <mwielich@gitlab.com> Date: Mon, 26 Feb 2024 16:56:20 +0000 Subject: [PATCH] Deprecate `option` key for internal_events yaml Deprecate `option` key for internal_events yaml --- config/metrics/schema/internal_events.json | 18 +----------------- .../migration.md | 3 ++- .../cli/helpers/metric_options.rb | 6 ++++-- scripts/internal_events/cli/metric.rb | 5 ++--- scripts/internal_events/cli/metric_definer.rb | 4 ++-- .../metrics/ee_total_28d_single_event.yml | 3 --- .../metrics/ee_total_7d_single_event.yml | 3 --- .../metrics/ee_total_single_event.yml | 3 --- .../metrics/keyboard_smashed_metric_28d.yml | 3 --- .../metrics/keyboard_smashed_metric_7d.yml | 3 --- .../metrics/project_id_28d_multiple_events.yml | 4 ---- .../metrics/project_id_7d_multiple_events.yml | 4 ---- .../metrics/total_single_event.yml | 3 --- .../metrics/user_id_28d_single_event.yml | 3 --- .../metrics/user_id_7d_single_event.yml | 3 --- spec/scripts/internal_events/cli_spec.rb | 3 +-- 16 files changed, 12 insertions(+), 59 deletions(-) diff --git a/config/metrics/schema/internal_events.json b/config/metrics/schema/internal_events.json index d35a2fa22d75e..d09219392736f 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 b37932764b43d..db57eb4886b3a 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 01512115e05d7..c2f2c4f81cddd 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 0d39b0b4e2b57..5bb46d3d1363f 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 7688f03200fc3..7d52517485dfe 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 5238e997044fd..647fe9e04b2ae 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 fdbf137f6994d..700b461061824 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 e928869ca9aa2..b9c918e9a9ddd 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 4d40e2122cbfd..a0aa259e20731 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 166cef9041235..d3e3f91e51a70 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 122043e6cc026..09f23b07b17bc 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 11a4ba41c07d9..5b6ebcfb11a1a 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 038fc738f256a..a4f8ffb54c16e 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 b27e69bd43b4a..1b96ecd40b1a7 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 e08733a6bc9c4..5e34991a87d55 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 3bbda97d4b3d0..1c7a5e924a2fb 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 -- GitLab