From af31a8fa0464d7af77fc019cc2bbf4321b29429b Mon Sep 17 00:00:00 2001
From: Nwanna Isong <nisong@gitlab.com>
Date: Wed, 23 Oct 2024 12:57:47 +0000
Subject: [PATCH] Allow generator CLI to generate new definitions using the key
 'tiers'

---
 scripts/internal_events/cli/metric.rb                         | 1 +
 scripts/internal_events/cli/metric_definer.rb                 | 3 +++
 .../internal_events/metrics/ee_total_28d_single_event.yml     | 3 +++
 .../internal_events/metrics/ee_total_7d_single_event.yml      | 3 +++
 .../scripts/internal_events/metrics/ee_total_single_event.yml | 3 +++
 .../internal_events/metrics/keyboard_smashed_metric_28d.yml   | 4 ++++
 .../internal_events/metrics/keyboard_smashed_metric_7d.yml    | 4 ++++
 .../metrics/label_28d_single_event_additional_props.yml       | 4 ++++
 .../metrics/label_7d_single_event_additional_props.yml        | 4 ++++
 .../metrics/project_id_28d_multiple_events.yml                | 4 ++++
 .../internal_events/metrics/project_id_7d_multiple_events.yml | 4 ++++
 .../metrics/total_multi_event_some_additional_props.yml       | 4 ++++
 .../metrics/total_multiple_events_with_rename.yml             | 4 ++++
 .../scripts/internal_events/metrics/total_single_event.yml    | 4 ++++
 .../internal_events/metrics/user_id_28d_single_event.yml      | 4 ++++
 .../metrics/user_id_28d_single_event_additional_props.yml     | 4 ++++
 .../metrics/user_id_28d_single_event_all_additional_props.yml | 4 ++++
 .../internal_events/metrics/user_id_7d_single_event.yml       | 4 ++++
 .../metrics/user_id_7d_single_event_additional_props.yml      | 4 ++++
 .../metrics/user_id_7d_single_event_all_additional_props.yml  | 4 ++++
 20 files changed, 73 insertions(+)

diff --git a/scripts/internal_events/cli/metric.rb b/scripts/internal_events/cli/metric.rb
index 7bd141aeaae3..f6049a333d31 100755
--- a/scripts/internal_events/cli/metric.rb
+++ b/scripts/internal_events/cli/metric.rb
@@ -16,6 +16,7 @@ module InternalEventsCli
     :product_category,
     :distribution,
     :tier,
+    :tiers,
     :events
   ].freeze
 
diff --git a/scripts/internal_events/cli/metric_definer.rb b/scripts/internal_events/cli/metric_definer.rb
index b8b3370503ed..f8e9d3f090be 100755
--- a/scripts/internal_events/cli/metric_definer.rb
+++ b/scripts/internal_events/cli/metric_definer.rb
@@ -290,6 +290,8 @@ def prompt_for_tier(defaults)
         )
       end
 
+      assign_shared_attr(:tiers) { |metric| [*metric.tier] }
+
       assign_shared_attr(:distribution) do |metric|
         metric.tier.include?('free') ? %w[ce ee] : %w[ee]
       end
@@ -532,6 +534,7 @@ def collect_values_for_shared_event_properties
         fields[:section] << find_section(event.product_group)
         fields[:distribution] << event.distributions&.sort
         fields[:tier] << event.tiers&.sort
+        fields[:tiers] << event.tiers&.sort
       end
 
       # Keep event values if every selected event is the same
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 4e3f29180319..92315aed777b 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
@@ -15,5 +15,8 @@ distribution:
 tier:
 - premium
 - ultimate
+tiers:
+- premium
+- ultimate
 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 b9bb0c3580c8..8bf955e6b655 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
@@ -15,5 +15,8 @@ distribution:
 tier:
 - premium
 - ultimate
+tiers:
+- premium
+- ultimate
 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 91297eb80f26..829e2df4f8bf 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
@@ -15,5 +15,8 @@ distribution:
 tier:
 - premium
 - ultimate
+tiers:
+- premium
+- ultimate
 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 03f1a41dfec1..8b6335ba8971 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
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 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 efa1df68b721..7f22aa807713 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
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 events:
 - name: random_name
   unique: user.id
diff --git a/spec/fixtures/scripts/internal_events/metrics/label_28d_single_event_additional_props.yml b/spec/fixtures/scripts/internal_events/metrics/label_28d_single_event_additional_props.yml
index 165423d56883..8b3ca468a0cf 100644
--- a/spec/fixtures/scripts/internal_events/metrics/label_28d_single_event_additional_props.yml
+++ b/spec/fixtures/scripts/internal_events/metrics/label_28d_single_event_additional_props.yml
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 events:
 - name: internal_events_cli_used
   unique: label
diff --git a/spec/fixtures/scripts/internal_events/metrics/label_7d_single_event_additional_props.yml b/spec/fixtures/scripts/internal_events/metrics/label_7d_single_event_additional_props.yml
index 6f2aac0a8012..b67a333c9bff 100644
--- a/spec/fixtures/scripts/internal_events/metrics/label_7d_single_event_additional_props.yml
+++ b/spec/fixtures/scripts/internal_events/metrics/label_7d_single_event_additional_props.yml
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 events:
 - name: internal_events_cli_used
   unique: label
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 d6b2a0c40bfa..6efd5619cbe9 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
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 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 9df22f382545..7f47884b4b25 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
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 events:
 - name: internal_events_cli_closed
   unique: project.id
diff --git a/spec/fixtures/scripts/internal_events/metrics/total_multi_event_some_additional_props.yml b/spec/fixtures/scripts/internal_events/metrics/total_multi_event_some_additional_props.yml
index 33700efec1e1..cd6180dc47f2 100644
--- a/spec/fixtures/scripts/internal_events/metrics/total_multi_event_some_additional_props.yml
+++ b/spec/fixtures/scripts/internal_events/metrics/total_multi_event_some_additional_props.yml
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 events:
 - name: internal_events_cli_closed
 - name: internal_events_cli_used
diff --git a/spec/fixtures/scripts/internal_events/metrics/total_multiple_events_with_rename.yml b/spec/fixtures/scripts/internal_events/metrics/total_multiple_events_with_rename.yml
index 79aec02e8300..3463caa680cd 100644
--- a/spec/fixtures/scripts/internal_events/metrics/total_multiple_events_with_rename.yml
+++ b/spec/fixtures/scripts/internal_events/metrics/total_multiple_events_with_rename.yml
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 events:
 - name: internal_events_cli_closed
 - name: internal_events_cli_opened
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 6a07c346ca51..a3ae9a80e085 100644
--- a/spec/fixtures/scripts/internal_events/metrics/total_single_event.yml
+++ b/spec/fixtures/scripts/internal_events/metrics/total_single_event.yml
@@ -17,5 +17,9 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 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 d866143a50b7..4d5ba4ea99ea 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
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 events:
 - name: internal_events_cli_used
   unique: user.id
diff --git a/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event_additional_props.yml b/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event_additional_props.yml
index 58fa9a5a2a38..46847738253b 100644
--- a/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event_additional_props.yml
+++ b/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event_additional_props.yml
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 events:
 - name: internal_events_cli_used
   unique: user.id
diff --git a/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event_all_additional_props.yml b/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event_all_additional_props.yml
index d03ece44b06c..ddda99a397c2 100644
--- a/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event_all_additional_props.yml
+++ b/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event_all_additional_props.yml
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 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 d0f4edc384b6..253005c84c30 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
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 events:
 - name: internal_events_cli_used
   unique: user.id
diff --git a/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event_additional_props.yml b/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event_additional_props.yml
index 4503f0fe882a..0bad13709c2a 100644
--- a/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event_additional_props.yml
+++ b/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event_additional_props.yml
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 events:
 - name: internal_events_cli_used
   unique: user.id
diff --git a/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event_all_additional_props.yml b/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event_all_additional_props.yml
index 47c9415c3fcf..6eb8392bd416 100644
--- a/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event_all_additional_props.yml
+++ b/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event_all_additional_props.yml
@@ -17,6 +17,10 @@ tier:
 - free
 - premium
 - ultimate
+tiers:
+- free
+- premium
+- ultimate
 events:
 - name: internal_events_cli_used
   unique: user.id
-- 
GitLab