Use new registry API endpoint to check if a namespace has any tagged container repositories under any project
Context
It is a well known problem that renaming/moving groups with container repositories is not possible Allow renaming/moving groups and projects with ... (&9459).
This was recently brought to our attention in this issue (internal) that attempting to rename a namespace that removed all container repositories is failing.
Problem (B)
See original description in this issue.
There are several loops in functions that fundamentally only need to check a thing: if a given namespace has tags or not.
Solution
A new list sub-repositories endpoint was recently introduced to the Registry GitLab's v1 API.
rails can be updated to use the new endpoint instead of querying for each project.
The query can be as simple as follows:
GET /gitlab/v1/repository-paths/<namespace>/repositories/list/?n=1
Where <namespace>
is the group in question.
- Add new method to the registry client in https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/container_registry/client.rb
- Update the
first_project_with_container_registry_tags
method https://gitlab.com/gitlab-org/gitlab/-/blob/8763a620ad44ba5561d85eb9cb032237f6e23846/app/models/namespace.rb#L308
Edited by Jaime Martinez