18995: Merge branch 'main' into 18995-code-cleanup-1
[arvados.git] / services / api / app / controllers / sys_controller.rb
index ecc02e83dc2e33115668a6e949737a75632a88a2..a67b124bd09ffc92834d3bd66a508ef96ffa6dc0 100644 (file)
@@ -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|