Migrate epic events to internal events: vol.4 - epic issues events
What does this MR do and why?
Related to #421593 (closed)
Migrate some of the redis_hll_counters.epics_usage.epics_usage_total_unique_counts_monthly
event's sub-events to Internal Events API.
Script used to update the files:
class DebugGenerator < Gitlab::Analytics::InternalEventsGenerator source_root File.expand_path('generator_templates/gitlab_internal_events', __dir__)def create_metric_file validate!
template "event_definition.yml",
event_file_path(event),
options.fetch(:event_desc)
end
def milestone "16.5" end end
is_ee = true mr_number = 132024 unique_by = "user.id" section = "dev" stage = "plan" group = "product_planning" events_with_desc = [ ['g_project_management_epic_issue_added', "An issue has been added to an epic"], ['g_project_management_epic_issue_removed', "An issue has been removed from an epic"], ['g_project_management_epic_issue_moved_from_project', "An epic's issue has been moved to a different project"], ['g_project_management_users_updating_epic_parent', "An epic's parent has been updated"], ['g_project_management_epic_closed', "An epic has been closed"], ['g_project_management_epic_reopened', "An epic has been reopened"], ['g_project_management_issue_promoted_to_epic', "An issue has been promoted to an epic"], ]
events_with_desc.each do |event_name, event_desc| tiers = %w[premium ultimate] tiers = %w[free premium ultimate] if !is_ee DebugGenerator.new([], { event: event_name, event_desc: event_desc, section: section, stage: stage, group: group, mr: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/#{mr_number}", unique: unique_by, tiers: tiers }).invoke_all ['28d', '7d'].each do |days| dir_prefix = is_ee ? "ee/" : "" event_file_pattern = event_name.gsub('g_project_management_', 'g_project_management_users_') event_file_pattern2 = event_name.delete_prefix('g_project_management_')
files = Dir["#{dir_prefix}config/metrics/counts_#{days}/*\_#{event_file_pattern}\_*"]
files += Dir["#{dir_prefix}config/metrics/counts_#{days}/*\_#{event_file_pattern2}\_*"] if files.count < 1
raise StandardError, "Multiple files found: #{files}" unless files.count == 1
file_name = files.first
text = File.read(file_name)
new_contents = text.gsub(/distribution:/, "events:
-
name: #{event_name} unique: #{unique_by}\ndistribution:") new_contents = new_contents.gsub(/data_source: redis_hll/, "data_source: internal_events")
File.open(file_name, "w") {|file| file.puts new_contents } end end
Screenshots or screen recordings
Screenshots are required for UI changes, and strongly recommended for all other merge requests.
Before | After |
---|---|
How to set up and validate locally
- Enable snowplow micro
- Trigger any of the events migrated here:
- add an issue to an epic
- remove an issue from an epic
- move an epic's issue into a different project
- change epic's parent or children epics
- close an epic
- reopen an epic
- promote an issue to epic
- Make sure that the events have been triggered with content as per their new event definition files [eg. -
category
sent asInternalEventTracking
] on thehttp://localhost:9091/micro/good
snowplow micro endpoint.
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.