Feature #17351

Updated by Nico C├ęsar 9 months ago

Goals of this ticket:
* to define the command line arguments to specify
Once #17349 is done, railsapi will have "replicas_desired" with some values that accept several storage clases
* to have all

the expected behaviour for arv-put
* to add to
same scenarios as in #17350, and the documentation this behaviour
* to add necesary tests to make sure we comply with this behaviour
"Collection Effective Value" from #17349

to discuss:
* shall we migrate
h2. table of arv-put to Go in this instance or is this a future work?

h2. Current command line arguments (arvados 2.1.0) :
commands and notes each scenario

<pre> |_. Collection Effective Value |_. Volumes scenario | Expected result after keep-balance run |
arv-put --help
usage: arv-put [-h] [--version] [--normalize
| --dry-run]
{"default": 1} | --stream 1 | --as-manifest keep0 has 1 copy|
| --in-manifest {"default": 1, "archival": 1} | --manifest 1 | --as-raw impossible, there is no archival class? | --raw]
[--update-collection UUID] [--use-filename FILENAME]
[--filename FILENAME] [--portable-data-hash] [--replication N]
[--storage-classes STORAGE_CLASSES] [--threads N]
[--exclude PATTERN] [--follow-links

| --no-follow-links]
[--trash-at YYYY-MM-DDTHH:MM
{"default": 0, "archival": 2} | --trash-after DAYS]
[--project-uuid UUID] [--name NAME]
1 | --no-progress impossible, there is no archival class? | --batch-progress] [--silent]

| --no-resume] [--cache {"default": 1} | --no-cache]
[--retries RETRIES]
[path [path ...]]
2 | keep0 has 1 copy|
--replication N Set the replication level for the new collection: how
many different physical storage devices (e.g., disks)
should have a
| {"default": 1, "archival": 1} | 2 | keep0 has 1 copy of each data block. Default and keep1 has 1 copy |
| {"default": 0, "archival": 2} | 2 | impossible, there
is to
use the server-provided default (if any) or 2.
--storage-classes STORAGE_CLASSES
Specify comma separated list of storage classes to be
used when saving data to Keep.

h3. base casecase
arv-put --replication N
no 2 archival class keepstores --storage-classes STORAGE_CLASSES directory

h3. updating an existing collection
arv-put --replication N --storage-classes STORAGE_CLASSES directory --update-collection zzzzz-4zz18-xxxxxxxxxxxxxxx

h3. giving conflicting options for resume transaction
arv-put --replication N --storage-classes STORAGE_CLASSES directory
arv-put --replication M --storage-classes DIFFERENT_STORAGE_CLASSES directory --resume