Skip to content

Support multiple container repos on manual cleanup

What does this MR do?

The code snippet currently does not support container registries containing multiple ContainerRepository objects and it will only grab the first one.

It is necessary to modify the code so we can loop through each ContainerRepository object, and then run the cleanup.

The example snippets below show a project containing two ContainerRepository objects.

Rails output before

irb(main):220:0> repo = ContainerRepository.find_by(project_id: P)
=> #<ContainerRepository id: 15, project_id: 336, name: "first-repo", created_at: "2020-09-09 22:06:30", updated_at: "2020-09-09 22:06:30", status: nil>
irb(main):224:0> Projects::ContainerRepository::CleanupTagsService.new(project, user, policy.attributes.except("created_at", "updated_at")).execute(repo)
=> {:deleted=>[], :status=>:success}

Rails output after

irb(main):184:0> project.container_repositories.find_each do |repo|
irb(main):185:1*
irb(main):186:1*     puts repo.attributes
irb(main):187:1>
irb(main):188:1>     # Get the expiration policy
irb(main):189:1>     policy  = ContainerExpirationPolicy.find_by(project_id: P)
irb(main):190:1>
irb(main):191:1>     # Start the tag cleanup
irb(main):192:1>     puts Projects::ContainerRepository::CleanupTagsService.new(project, user, policy.attributes.except("created_at", "updated_at")).execute(repo)
irb(main):193:1>
irb(main):194:1> end
{"id"=>15, "project_id"=>336, "name"=>"first-repo", "created_at"=>Wed, 09 Sep 2020 22:06:30 UTC +00:00, "updated_at"=>Wed, 09 Sep 2020 22:06:30 UTC +00:00, "status"=>nil}
{:deleted=>[], :status=>:success}
{"id"=>16, "project_id"=>336, "name"=>"second-repo", "created_at"=>Wed, 09 Sep 2020 22:09:07 UTC +00:00, "updated_at"=>Wed, 09 Sep 2020 22:09:07 UTC +00:00, "status"=>nil}
{:deleted=>[], :status=>:success}
=> nil
irb(main):195:0>

Relates to #219915 (closed)

Another user also pointed out this issue here #219915 (comment 398622303)

Related issues

Author's checklist (required)

Do not add the feature, frontend, backend, ~"bug", or database labels if you are only updating documentation. These labels will cause the MR to be added to code verification QA issues.

When applicable:

Review checklist

All reviewers can help ensure accuracy, clarity, completeness, and adherence to the Documentation Guidelines and Style Guide.

1. Primary Reviewer

  • Review by a code reviewer or other selected colleague to confirm accuracy, clarity, and completeness. This can be skipped for minor fixes without substantive content changes.

2. Technical Writer

  • Technical writer review. If not requested for this MR, must be scheduled post-merge. To request for this MR, assign the writer listed for the applicable DevOps stage.
    • Ensure docs metadata are present and up-to-date.
    • Ensure Technical Writing and documentation are added.
    • Add the corresponding docs:: scoped label.
    • Add twdoing when starting work on the MR.
    • Add twfinished if Technical Writing team work on the MR is complete but it remains open.

3. Maintainer

  1. Review by assigned maintainer, who can always request/require the above reviews. Maintainer's review can occur before or after a technical writer review.
  2. Ensure a release milestone is set.
  3. If there has not been a technical writer review, create an issue for one using the Doc Review template.
Edited by Anton Smith

Merge request reports

Loading