Skip to content

Migrate epic events to internal events: vol.4 - epic issues events

Michał Wielich requested to merge michold-epic-migr-vol4 into master

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

  1. Enable snowplow micro
  2. 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
  1. Make sure that the events have been triggered with content as per their new event definition files [eg. - category sent as InternalEventTracking] on the http://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.

Edited by Michał Wielich

Merge request reports