X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/685db28b50225cde7dbb03aa2275f7a165d888a3..056f25f39b72bbaca2f66a41285d6f9a5a5bb56f:/services/api/app/controllers/sys_controller.rb diff --git a/services/api/app/controllers/sys_controller.rb b/services/api/app/controllers/sys_controller.rb index ecc02e83dc..a67b124bd0 100644 --- a/services/api/app/controllers/sys_controller.rb +++ b/services/api/app/controllers/sys_controller.rb @@ -7,7 +7,7 @@ class SysController < ApplicationController skip_before_action :render_404_if_no_object before_action :admin_required - def sweep_trash + def trash_sweep act_as_system_user do # Sweep trashed collections Collection. @@ -17,28 +17,29 @@ class SysController < ApplicationController where('is_trashed = false and trash_at < statement_timestamp()'). update_all('is_trashed = true') - # Sweep trashed projects and their contents + # Sweep trashed projects and their contents (as well as role + # groups that were trashed before #18340 when that was + # disallowed) Group. - where({group_class: 'project'}). where('delete_at is not null and delete_at < statement_timestamp()').each do |project| delete_project_and_contents(project.uuid) end Group. - where({group_class: 'project'}). where('is_trashed = false and trash_at < statement_timestamp()'). update_all('is_trashed = true') # Sweep expired tokens ActiveRecord::Base.connection.execute("DELETE from api_client_authorizations where expires_at <= statement_timestamp()") end + head :no_content end protected def delete_project_and_contents(p_uuid) p = Group.find_by_uuid(p_uuid) - if !p || p.group_class != 'project' - raise "can't sweep group '#{p_uuid}', it may not exist or not be a project" + if !p + raise "can't sweep group '#{p_uuid}', it may not exist" end # First delete sub projects Group.where({group_class: 'project', owner_uuid: p_uuid}).each do |sub_project|