Story #17573

User interface for exposing / changing storage classes on a collection

Added by Peter Amstutz 6 months ago. Updated 2 months ago.

Status:
Resolved
Priority:
Normal
Assigned To:
Category:
Workbench2
Target version:
Start date:
07/15/2021
Due date:
% Done:

100%

Estimated time:
(Total: 0.00 h)
Story points:
-
Release relationship:
Auto

Description

Will iterate over the list of volumes (from the exported config) to determine which storage classes are available, and put that in a dropdown list for the user to add/change/remove storage classes on a collection.

Storage classes display.png (439 KB) Storage classes display.png Lucas Di Pentima, 07/08/2021 03:19 PM
Storage classes edit.png (427 KB) Storage classes edit.png Lucas Di Pentima, 07/08/2021 03:19 PM

Subtasks

Task #17837: Review 17573-export-storage-classes (arvados repo) & 17573-edit-storage-classes (wb2 repo)ResolvedLucas Di Pentima


Related issues

Related to Arvados Epics - Story #16107: Storage classesResolved03/01/202109/30/2021

Associated revisions

Revision ab8458af
Added by Lucas Di Pentima 3 months ago

Merge branch '17573-export-storage-classes' into main. Refs #17573

Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <>

Revision 20063f6f
Added by Lucas Di Pentima 3 months ago

Merge branch '17573-edit-storage-classes' into main. Closes #17573

Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <>

History

#1 Updated by Peter Amstutz 6 months ago

#2 Updated by Peter Amstutz 6 months ago

  • Description updated (diff)

#3 Updated by Peter Amstutz 6 months ago

  • Description updated (diff)

#4 Updated by Peter Amstutz 4 months ago

  • Target version set to 2021-07-07 sprint

#5 Updated by Peter Amstutz 4 months ago

  • Assigned To set to Lucas Di Pentima

#6 Updated by Peter Amstutz 4 months ago

  • Target version changed from 2021-07-07 sprint to 2021-07-21 sprint

#7 Updated by Lucas Di Pentima 4 months ago

  • Status changed from New to In Progress

#8 Updated by Lucas Di Pentima 4 months ago

UI Proposal:

Take advantage of the "Collection Edit" dialog to show a list of checkboxes with every storage class available.
The dialog should not allow zero classes to be selected.

The storage_classes_desired list will be displayed on the properties attribute panel as shown on the mockup. It will also appear on the collapsible "Info panel".

I think this should be enough as the storage classes aren't something that might be edited frequently so it doesn't need a more agile UI.

#9 Updated by Peter Amstutz 4 months ago

Lucas Di Pentima wrote:

UI Proposal:

Take advantage of the "Collection Edit" dialog to show a list of checkboxes with every storage class available.
The dialog should not allow zero classes to be selected.

The storage_classes_desired list will be displayed on the properties attribute panel as shown on the mockup. It will also appear on the collapsible "Info panel".

I think this should be enough as the storage classes aren't something that might be edited frequently so it doesn't need a more agile UI.

This is good. My only suggestion is that it should enforce that at least one storage class has to be checked, so you can't uncheck the last one.

#10 Updated by Lucas Di Pentima 4 months ago

Updates at:

Arvados repo updates

  • Exports Volumes.*.StorageClasses.* configs.
  • Adds default, foo and bar storage classes to arvados-server's test mode: it was generating 'Volumes.*.StorageClasses = null' configs.

Workbench2 repo updates

  • Loads Volumes.*.StorageClasses.* exported configs into the store and provides a function that returns a list of all the available classes in the cluster.
  • Displays collection's storage_classes_desired array on the collection main & details panels.
  • Adds generic redux-form compatible "multi checkbox field" component.
  • Uses the above-mentioned component in the "Edit Collection" dialog, enforcing at least 1 storage class to be always selected.
  • Adds integration tests

To be discussed

  • I first tried to add custom Volumes.*.StorageClasses configurations to the arvados_config.yml file that we have on wb2's repo for this purpose, but arvados-server doesn't seem to be loading them, so that's why I also added them on arvados-server's code. (I left them on the YAML file just in case there's a bug on the config loading code)
  • RailsAPI currently allows a collection to have a storage class that doesn't exist on the cluster's configuration. I guess this is needed for those cases where a storage class is decommissioned or renamed. Currently, workbench2 doesn't render those classes as checkboxes on the "Edit Collection" dialog, so it isn't possible to remove them unless the user/admin uses the CLI tools. If this is not the appropriate UX behavior, we should come up with something that makes more sense.

#11 Updated by Peter Amstutz 3 months ago

Lucas Di Pentima wrote:

Updates at:

To be discussed

  • I first tried to add custom Volumes.*.StorageClasses configurations to the arvados_config.yml file that we have on wb2's repo for this purpose, but arvados-server doesn't seem to be loading them, so that's why I also added them on arvados-server's code. (I left them on the YAML file just in case there's a bug on the config loading code)

Hmm, it is a little surprising that workbench2/tools/arvados_config.yml doesn't work. Possibly the test server just overwrites and ignores the volumes section?

  • RailsAPI currently allows a collection to have a storage class that doesn't exist on the cluster's configuration. I guess this is needed for those cases where a storage class is decommissioned or renamed. Currently, workbench2 doesn't render those classes as checkboxes on the "Edit Collection" dialog, so it isn't possible to remove them unless the user/admin uses the CLI tools. If this is not the appropriate UX behavior, we should come up with something that makes more sense.

I think that's fine. In the migration case the admin would need to do bulk migration anyway. I don't think people will manually change storage classes on individual collections very often.

One comment, rest LGTM:

The getStorageClasses() method should always add "default" to the list.

#12 Updated by Lucas Di Pentima 3 months ago

  • Status changed from In Progress to Resolved

#13 Updated by Lucas Di Pentima 2 months ago

  • Release set to 41

#14 Updated by Peter Amstutz 2 months ago

  • Release changed from 41 to 42

Also available in: Atom PDF