Project

General

Profile

Actions

Idea #12032

closed

[API] Allow projects to be deleted (ie placed in the trash can)

Added by Tom Morris over 6 years ago. Updated over 6 years ago.

Status:
Resolved
Priority:
Normal
Assigned To:
Category:
API
Target version:
Story points:
3.0

Description

As a user, I would like deleted projects to be placed in the Trash rather than cluttering my Home project and when the Trash is emptied, the project and all of its contents, recursively, get deleted.

Details about desired behavior after the Workbench "trash" button is hit on a project:
  • The project and everything below it (including other subprojects) stop showing up in the usual places in Workbench, arv-mount, etc., even if there are explicit permission links (like collection-sharing links) to the project or its contents.
  • The project and its contents can still be retrieved using "get" and "list" API calls with the include_trash flag.
  • The project appears in its parent project's "trashed items" tab in Workbench. Clicking the project shows the trashed project with its implicitly-trashed contents: there is an obvious indication that the project itself is trashed, and (TBD?) all of its contents appear in the "trashed items" tab instead of their usual places.
  • If a user follows an old link/bookmark to the project, the page is not found. Except: (TBD?) The "not found" error page should acknowledge that the project is still available in the trash, and offer a link to the "trashed project" view described above.
  • The project and all of its previously-untrashed contents can be un-trashed by calling the "untrash" method on the project. However, if the project already contained items which were trash before the project was trashed, untrashing the project does not untrash those items.
  • Any individual item contained in the trashed project can be untrashed by changing its owner_uuid field to a project/user that is not trashed.
  • Data integrity: There is no sequence of API calls that could result in a collection being deleted (or otherwise made invisible to keep-balance) less than blobSignatureTTL seconds after the last time a client read or updated that collection's manifest.
The trash/untrash APIs should be similar to the collection trash/untrash APIs. Specifically:
  • Each project should have a delete_at timestamp that can be set to a time ≥blobSignatureTTL in the future

The trash/untrash APIs should work quickly and atomically, even when a large hierarchy of items is affected. This implies that the permission graph gains a "trashed?" flag, which is taken into account when retrieving results for get/list APIs, even for admin users.

Components to be updated:
  • API server
  • API docs
  • Workbench
  • arv-mount

Subtasks 2 (0 open2 closed)

Task #12131: Review 12032-project-trashResolvedPeter Amstutz08/08/2017Actions
Task #12126: API server support for trashResolvedPeter Amstutz08/08/2017Actions

Related issues

Related to Arvados - Idea #10816: [AP] [spike] Implement permission lookups as a recursive graph query in Postgres instead of computing in RubyResolvedTom Clegg01/04/2017Actions
Related to Arvados - Idea #12125: Client support for deleting projectsResolvedPeter Amstutz08/08/2017Actions
Actions

Also available in: Atom PDF