Add custom context to p_ci_templates events
requested to merge 371803-fix-existing-snowplow-events-adapted-from-redis-metrics-to-conform-to-a-new-standard-2 into master
What does this MR do and why?
Add custom context to Snowplow event according to the new schema
Screenshots or screen recordings
How to set up and validate locally
- Manually dispatch an event, something like
[11] pry(main)> label = 'redis_hll_counters.ci_templates.ci_templates_total_unique_counts_monthly'
=> "redis_hll_counters.ci_templates.ci_templates_total_unique_counts_monthly"
[12] pry(main)> name = 'push'
=> "push"
[13] pry(main)> user = User.first
User Load (1.6ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1 /*application:console,db_config_name:main,console_hostname:Nikos-MacBook-Pro.local,console_username:niko,line:(pry):18:in `__pry__'*/
=> #<User id:1 @root>
[14] pry(main)> project = Project.first
Project Load (1.9ms) SELECT "projects".* FROM "projects" ORDER BY "projects"."id" ASC LIMIT 1 /*application:console,db_config_name:main,console_hostname:Nikos-MacBook-Pro.local,console_username:niko,line:(pry):19:in `__pry__'*/
Route Load (0.5ms) SELECT "routes".* FROM "routes" WHERE "routes"."source_id" = 1 AND "routes"."source_type" = 'Project' LIMIT 1 /*application:console,db_config_name:main,console_hostname:Nikos-MacBook-Pro.local,console_username:niko,line:/app/models/concerns/routable.rb:121:in `full_path'*/
=> #<Project id:1 gitlab-org/gitlab-test>>
[15] pry(main)> namespace = project.namespace
...
=> #<Group id:22 @gitlab-org>
[16] pry(main)> context = Gitlab::Tracking::ServicePingContext.new(data_source: :redis_hll,
event: event_name).to_context
=> #<SnowplowTracker::SelfDescribingJson:0x00000001379ec9c8
@data={:data_source=>:redis_hll, :event_name=>"terrafiorm_module"},
@schema="iglu:com.gitlab/gitlab_service_ping/jsonschema/1-0-0">
[17] pry(main)> Gitlab::Tracking.event(name, 'ci_templates_unique', namespace: namespace,
project: project, context: [context], user: user,
Plan Load (1.0ms) SELECT "plans".* FROM "plans" WHERE "plans"."name" = 'default' LIMIT 1 /*application:console,db_config_name:main,console_hostname:Nikos-MacBook-Pro.local,console_username:niko,line:/app/models/plan.rb:17:in `block in default'*/
=> 2.0
- Verify the even in snowplow micro as
POST http://localhost:9091/micro/good
Content-Type: application/json
{
"contexts": [
"iglu:com.gitlab/gitlab_service_ping/jsonschema/1-0-0"
], "limit": 1
}
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.
Related to #371803 (closed)
Edited by Niko Belokolodov