Replace User-Agent sniffing for Congregate detection with a dedicated header
What
Gitlab::Import::RequestChannel.congregate? (in lib/gitlab/import/request_channel.rb) detects Congregate by checking if a request's User-Agent starts with "GitLabApiClient". That string is the default User-Agent of gitlab_ps_utils' GitLabApi client — a shared Python library, not something unique to Congregate.
Why it's a problem
Any other script or tool built on that same shared library would send the same default User-Agent and get misattributed to Congregate. This means the request_channel property introduced in !256773 (merged) can report false positives for :congregate.
What this task covers
- Coordinate with the team that owns Congregate (GitLab Professional Services / Migrations) to have Congregate send a dedicated, unambiguous header on its requests (e.g. a custom header like
X-Gitlab-Migration-Tool: congregate). - Update
Gitlab::Import::RequestChannel.congregate?to check that header instead of (or alongside, during a transition period) the User-Agent heuristic.
References
- Originated from review feedback on !256773 (merged) (closes #627877 (closed)), raised by George Koltsov questioning the breadth of the User-Agent match.
- Parent: #617884