Project

General

Profile

Actions

Feature #18621

open

Ability for admin to purge old versions of a collection

Added by Peter Amstutz over 2 years ago. Updated 5 days ago.

Status:
New
Priority:
Normal
Assigned To:
-
Category:
API
Story points:
-

Description

Deleting past versions should leave a record in the audit trail.

Would like to be able to provide a filter that describes past versions that should be pruned.

I think the interface would end up being very similar to the bulk trash API (#20972), where it deletes a page of things at a time.

This would probably have a distinct endpoint as the behavior will be a bit different.

There's a couple ways to approach this: one would be to set trash_at and delete_at on the past versions and have the normal cleanup process actually delete the rows. The main issue is that when certain changes happen on the head version, it updates trash_at and delete_at in all the past versions in sync_past_versions. So we would need to decide what we want the behavior to be in that situation.

The other option is to just delete the rows immediately.

From discussion:

  • admin only
  • Purges up to limit items (one request page at a time) and returns the items that were deleted as a list result
    • manifest_text is excluded from result unless "select" is used
    • supports "limit" and "order" (just like a list request)
    • should support a "dry_run" option that returns the list of things that would be purged without actually purging them
  • Row are deleted immediately
  • Adds a "delete event" to the logs table for each row that is deleted

Detailed design

endpoint: /arvados/v1/collections/purge

User accessing the endpoint must be admin, otherwise returns 403.

Methods

purge

HTTP POST with query parameters (in the URL or body, as supported by every other endpoint).

All other methods (GET etc) are not supported. Any paths under the endpoint return 404.

POST with no parameters yields an error.

Argument Type Description
limit integer optional, same as other API methods
offset integer optional, same as other API methods
order array optional, same as other API methods
select array optional, same as other API methods
count string optional, same as other API methods
filters array required, same as other API methods
dry_run boolean optional, if true, returns the items that would be purged but don't actually delete them
  • Only matches collections where uuid != current_version_uuid in addition to filters
  • Purges and returns up to "limit" items, only items returned are actually purged, unless dry_run is true
    • manifest_text is excluded from result unless "select" is used
  • Row are deleted immediately
  • Adds a "delete event" to the logs table for each row that is deleted
  • Returns collection objects that were purged in "items" same as other list APIs, these are deleted from the collections table entirely and won't be returned again, unless dry_run is true
  • Can use count=exact and dry_run=true to see how many items would be purged without actually purging them.

Related issues

Related to Arvados - Feature #20972: Bulk trash APINewActions
Actions

Also available in: Atom PDF