cloudos-cli 2.90.2__tar.gz → 2.92.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/PKG-INFO +82 -68
  2. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/README.md +81 -67
  3. cloudos_cli-2.92.0/cloudos_cli/_version.py +1 -0
  4. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/datasets/cli.py +15 -74
  5. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/interactive_session/cli.py +95 -334
  6. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/interactive_session/interactive_session.py +15 -22
  7. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/link/cli.py +49 -21
  8. cloudos_cli-2.92.0/cloudos_cli/link/link.py +996 -0
  9. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/procurement/cli.py +7 -10
  10. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/procurement/images.py +7 -9
  11. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli.egg-info/PKG-INFO +82 -68
  12. cloudos_cli-2.90.2/cloudos_cli/_version.py +0 -1
  13. cloudos_cli-2.90.2/cloudos_cli/link/link.py +0 -718
  14. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/LICENSE +0 -0
  15. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/__init__.py +0 -0
  16. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/__main__.py +0 -0
  17. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/bash/__init__.py +0 -0
  18. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/bash/cli.py +0 -0
  19. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/clos.py +0 -0
  20. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/configure/__init__.py +0 -0
  21. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/configure/cli.py +0 -0
  22. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/configure/configure.py +0 -0
  23. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/constants.py +0 -0
  24. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/cost/__init__.py +0 -0
  25. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/cost/cost.py +0 -0
  26. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/cromwell/__init__.py +0 -0
  27. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/cromwell/cli.py +0 -0
  28. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/datasets/__init__.py +0 -0
  29. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/datasets/datasets.py +0 -0
  30. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/import_wf/__init__.py +0 -0
  31. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/import_wf/import_wf.py +0 -0
  32. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/interactive_session/__init__.py +0 -0
  33. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/jobs/__init__.py +0 -0
  34. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/jobs/cli.py +0 -0
  35. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/jobs/job.py +0 -0
  36. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/link/__init__.py +0 -0
  37. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/logging/__init__.py +0 -0
  38. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/logging/logger.py +0 -0
  39. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/procurement/__init__.py +0 -0
  40. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/projects/__init__.py +0 -0
  41. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/projects/cli.py +0 -0
  42. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/queue/__init__.py +0 -0
  43. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/queue/cli.py +0 -0
  44. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/queue/queue.py +0 -0
  45. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/related_analyses/__init__.py +0 -0
  46. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/related_analyses/related_analyses.py +0 -0
  47. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/utils/__init__.py +0 -0
  48. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/utils/array_job.py +0 -0
  49. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/utils/cli_helpers.py +0 -0
  50. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/utils/cloud.py +0 -0
  51. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/utils/details.py +0 -0
  52. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/utils/errors.py +0 -0
  53. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/utils/last_wf.py +0 -0
  54. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/utils/nextflow_version.py +0 -0
  55. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/utils/requests.py +0 -0
  56. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/utils/resources.py +0 -0
  57. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/workflows/__init__.py +0 -0
  58. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli/workflows/cli.py +0 -0
  59. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli.egg-info/SOURCES.txt +0 -0
  60. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli.egg-info/dependency_links.txt +0 -0
  61. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli.egg-info/entry_points.txt +0 -0
  62. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli.egg-info/requires.txt +0 -0
  63. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/cloudos_cli.egg-info/top_level.txt +0 -0
  64. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/setup.cfg +0 -0
  65. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/setup.py +0 -0
  66. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/__init__.py +0 -0
  67. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/functions_for_pytest.py +0 -0
  68. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/test_cli_project_create.py +0 -0
  69. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/test_cost/__init__.py +0 -0
  70. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/test_cost/test_job_cost.py +0 -0
  71. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/test_details.py +0 -0
  72. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/test_error_messages.py +0 -0
  73. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/test_interactive_session/__init__.py +0 -0
  74. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/test_interactive_session/test_create_session.py +0 -0
  75. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/test_interactive_session/test_list_sessions.py +0 -0
  76. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/test_logging/__init__.py +0 -0
  77. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/test_logging/test_logger.py +0 -0
  78. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/test_nextflow_version.py +0 -0
  79. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/test_related_analyses/__init__.py +0 -0
  80. {cloudos_cli-2.90.2 → cloudos_cli-2.92.0}/tests/test_related_analyses/test_related_analyses.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudos_cli
3
- Version: 2.90.2
3
+ Version: 2.92.0
4
4
  Summary: Python package for interacting with the Lifebit Platform
5
5
  Home-page: https://github.com/lifebit-ai/cloudos-cli
6
6
  Author: David Piñeyro
@@ -109,11 +109,11 @@ Python package for interacting with Lifebit Platform
109
109
  - [Move Files](#move-files)
110
110
  - [Rename Files](#rename-files)
111
111
  - [Copy Files](#copy-files)
112
- - [Link S3 Folders to Interactive Analysis](#link-s3-folders-to-interactive-analysis)
112
+ - [Link Files and Folders to Interactive Analysis](#link-files-and-folders-to-interactive-analysis)
113
113
  - [Create Folder](#create-folder)
114
114
  - [Remove Files or Folders](#remove-files-or-folders)
115
115
  - [Link](#link)
116
- - [Link Folders to Interactive Analysis](#link-folders-to-interactive-analysis)
116
+ - [Link Files and Folders to Interactive Analysis](#link-files-and-folders-to-interactive-analysis-1)
117
117
  - [Procurement](#procurement)
118
118
  - [List Procurement Images](#list-procurement-images)
119
119
  - [Set Procurement Organization Image](#set-procurement-organization-image)
@@ -231,10 +231,10 @@ This will tell you the implemented commands. Each implemented command has its ow
231
231
  ```bash
232
232
  cloudos job list --help
233
233
  ```
234
- ```console Usage: cloudos job list [OPTIONS]
235
-
236
- Collect workspace jobs from a Lifebit Platform workspace in CSV or JSON format.
237
-
234
+ ```console Usage: cloudos job list [OPTIONS]
235
+
236
+ Collect workspace jobs from a Lifebit Platform workspace in CSV or JSON format.
237
+
238
238
  ╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────╮
239
239
  │ * --apikey -k TEXT Your Lifebit Platform API key [required] │
240
240
  │ * --cloudos-url -c TEXT The Lifebit Platform url you are trying to access to. │
@@ -299,7 +299,7 @@ $HOME
299
299
 
300
300
  ### Configure Default Profile
301
301
 
302
- To facilitate the reuse of required parameters, you can create profiles.
302
+ To facilitate the reuse of required parameters, you can create profiles.
303
303
 
304
304
  To generate a profile called `default`, use the following command:
305
305
 
@@ -321,7 +321,7 @@ The same prompts will appear, including the execution platform (aws or azure). I
321
321
 
322
322
  When configuring a profile, you can specify:
323
323
  - **API Key**: Your Lifebit Platform API credentials
324
- - **Platform URL**: The Lifebit Platform instance URL
324
+ - **Platform URL**: The Lifebit Platform instance URL
325
325
  - **Project Name**: Default project for commands
326
326
  - **Execution Platform**: `aws` (default) or `azure` - determines default instance types and available features
327
327
  - **Repository Platform**: Version control system (github, gitlab, etc.)
@@ -1314,7 +1314,7 @@ cloudos job cost --profile my_profile --job-id 62c83a1191fe06013b7ef355
1314
1314
  The expected output is a formatted table showing:
1315
1315
 
1316
1316
  ```console
1317
- Job Cost Details - Job ID: 62c83a1191fe06013b7ef355
1317
+ Job Cost Details - Job ID: 62c83a1191fe06013b7ef355
1318
1318
  ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━┓
1319
1319
  ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Compute ┃ ┃
1320
1320
  ┃ ┃ Instance ┃ ┃ Life-cycle ┃ ┃ Compute ┃ Instance ┃ storage ┃ ┃
@@ -1343,7 +1343,7 @@ On page 1/2: n = next, p = prev, q = quit
1343
1343
 
1344
1344
  By pressing 'n', it will show the next page or the last if it is the case.
1345
1345
 
1346
- Job Cost Details - Job ID: 62c83a1191fe06013b7ef355
1346
+ Job Cost Details - Job ID: 62c83a1191fe06013b7ef355
1347
1347
  ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━┓
1348
1348
  ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Compute ┃ ┃
1349
1349
  ┃ ┃ Instance ┃ ┃ Life-cycle ┃ ┃ Compute ┃ Instance ┃ storage ┃ ┃
@@ -1462,7 +1462,7 @@ The expected output is a formatted table showing:
1462
1462
  ```console
1463
1463
  Total related analyses found: 15
1464
1464
 
1465
- Related Analyses
1465
+ Related Analyses
1466
1466
  ┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━┓
1467
1467
  ┃ Status ┃ Name ┃ Owner ┃ ID ┃ Submit time ┃ Run time ┃ Total Cost ┃
1468
1468
  ┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━┩
@@ -1944,7 +1944,7 @@ Example Python Script:
1944
1944
  #!/usr/bin/python3
1945
1945
  print("Hello world")
1946
1946
  ```
1947
-
1947
+
1948
1948
  2. Or use an interpreter command in the executable field
1949
1949
 
1950
1950
  If your script doesn’t have a shebang line, you can execute it by explicitly specifying the interpreter in the executable command:
@@ -2021,7 +2021,7 @@ Interactive sessions allow you to work within the platform using different virtu
2021
2021
 
2022
2022
  You can get a list of all interactive sessions in your workspace by running `cloudos interactive-session list`. The command can produce three different output formats that can be selected using the `--output-format` option:
2023
2023
 
2024
- - **stdout** (default): Displays a table directly in the terminal with interactive pagination
2024
+ - **stdout** (default): Displays a table directly in the terminal with interactive pagination
2025
2025
  - **csv**: Saves session data to a CSV file with a minimum predefined set of columns by default, or all available columns using the `--all-fields` parameter
2026
2026
  - **json**: Saves complete session information to a JSON file with all available fields
2027
2027
 
@@ -2036,7 +2036,7 @@ cloudos interactive-session list --profile my_profile --output-format stdout
2036
2036
  The table displays sessions with pagination controls (press `n` for next page, `p` for previous page, or `q` to quit):
2037
2037
 
2038
2038
  ```console
2039
- Interactive Sessions
2039
+ Interactive Sessions
2040
2040
  ┏━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━┓
2041
2041
  ┃ Status ┃ Name ┃ Type ┃ ID ┃ Owner ┃
2042
2042
  ┡━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━┩
@@ -2183,7 +2183,7 @@ cloudos interactive-session create \
2183
2183
 
2184
2184
  **Data & Storage Management:**
2185
2185
  - `--mount`: Mount a data file into the session. Supports both Lifebit Platform datasets and S3 files (AWS only). Format: `project_name/dataset_path` (e.g., `leila-test/Data/file.csv`) or `s3://bucket/path/to/file` (e.g., `s3://my-bucket/data/file.csv`). Can be used multiple times.
2186
- - `--link`: Link a folder into the session for read/write access (AWS only). Supports S3 folders (e.g., `s3://my-bucket/data/`) and File Explorer folders (e.g., `my-project/Data/results`). Multiple folders can be specified using multiple `--link` flags or as comma-separated paths in a single `--link` argument.
2186
+ - `--link`: Link a file or folder into the session for read access (AWS only). Supports S3 files/folders (e.g., `s3://my-bucket/data/file.csv`, `s3://my-bucket/data/`) and File Explorer files/folders (e.g., `my-project/Data/file.csv`, `my-project/Data/results`). S3 paths whose last segment contains a `.` are treated as files; paths ending with `/` or without an extension are treated as folders. Multiple items can be specified using multiple `--link` flags or as comma-separated paths in a single `--link` argument.
2187
2187
  **Note:** Linking is not supported on Azure. Use Lifebit Platform File Explorer for data access.
2188
2188
 
2189
2189
  **Backend-Specific:**
@@ -2198,7 +2198,7 @@ cloudos interactive-session create \
2198
2198
 
2199
2199
  CloudOS CLI supports multiple ways to access data in interactive sessions, depending on your execution platform:
2200
2200
  - **Mount files** (`--mount`): Files are copied into the session's mounted-data volume. Supports CloudOS File Explorer files and S3 files (AWS only).
2201
- - **Link folders** (`--link`): Folders are mounted as read/write accessible directories in the session (AWS only). Supports both S3 folders and Lifebit Platform File Explorer folders. Linked folders appear with unique mount names based on the folder path.
2201
+ - **Link files/folders** (`--link`): Files and folders are mounted as read-accessible items in the session (AWS only). Supports S3 files, S3 folders, and Lifebit Platform File Explorer files and folders. Linked items appear with unique mount names based on the item name. Maximum 100 items per session.
2202
2202
 
2203
2203
 
2204
2204
  **Data Mounting Examples**
@@ -2572,7 +2572,7 @@ The command automatically loads from profile (via `@with_profile_config` decorat
2572
2572
 
2573
2573
  #### Resume Interactive Session
2574
2574
 
2575
- Resume a paused interactive session with optional configuration updates. You can change instance type, storage, cost limit, auto-shutdown time, and mount additional data files or folders when resuming.
2575
+ Resume a paused interactive session with optional configuration updates. You can change instance type, storage, cost limit, and auto-shutdown time when resuming.
2576
2576
 
2577
2577
 
2578
2578
  **Basic Usage**
@@ -2604,19 +2604,6 @@ cloudos interactive-session resume \
2604
2604
  --shutdown-in 12h
2605
2605
  ```
2606
2606
 
2607
- **Mount Additional Data**
2608
-
2609
- Resume and mount additional files:
2610
-
2611
- ```bash
2612
- cloudos interactive-session resume \
2613
- --session-id <SESSION_ID> \
2614
- --profile my_profile \
2615
- --mount my-project/Data/new-dataset.csv \
2616
- --mount s3://my-bucket/data/file.txt
2617
- ```
2618
-
2619
-
2620
2607
  **Configuration Updates**
2621
2608
 
2622
2609
  All configuration parameters are optional. If not specified, the session resumes with its previous configuration.
@@ -2626,6 +2613,8 @@ All configuration parameters are optional. If not specified, the session resumes
2626
2613
  - `--cost-limit <USD>` - Update compute cost limit (-1 for unlimited)
2627
2614
  - `--shutdown-in <DURATION>` - Update auto-shutdown time (e.g., 8h, 2d)
2628
2615
 
2616
+ > To link or mount data to a running session, use `cloudos link` or `cloudos datasets link` after the session has resumed.
2617
+
2629
2618
  ### Datasets
2630
2619
 
2631
2620
  Manage files and folders within your Lifebit Platform File Explorer programmatically. These commands provide comprehensive file management capabilities for organizing research data and results.
@@ -2657,7 +2646,7 @@ The `datasets ls` command supports different output formats using the `--output-
2657
2646
  - **`stdout` (default)**: Displays results in the console with Rich formatting
2658
2647
  - Without `--details`: Simple list of file/folder names with color coding (blue underlined for folders)
2659
2648
  - With `--details`: Rich formatted table with all file information
2660
-
2649
+
2661
2650
  - **`csv`**: Saves results to a CSV file
2662
2651
  - Without `--details`: CSV with two columns: "Name,Storage Path"
2663
2652
  - With `--details`: CSV with columns "Type, Owner, Size, Size (bytes), Last Updated, Virtual Name, Storage Path"
@@ -2707,7 +2696,7 @@ Any of the `source_path` must be a full path, starting from the `Data` datasets
2707
2696
  An example of such command is:
2708
2697
 
2709
2698
  ```
2710
- cloudos datasets mv Data/results/my_plot.png Data/plots
2699
+ cloudos datasets mv Data/results/my_plot.png Data/plots
2711
2700
  ```
2712
2701
 
2713
2702
  #### Rename Files
@@ -2718,7 +2707,7 @@ Change file and folder names while keeping them in the same location. This helps
2718
2707
  > Files and folders within the `Data` dataset can be renamed using the following command
2719
2708
 
2720
2709
  ```bash
2721
- cloudos datasets rename <path> <new_name> --profile my_profile
2710
+ cloudos datasets rename <path> <new_name> --profile my_profile
2722
2711
  ```
2723
2712
  where `path` is the full path to the file/folder to be renamed and `new_name` is just the name, no path required, as the file will not be moved.
2724
2713
 
@@ -2744,40 +2733,53 @@ or it can happen **across different projects** within the same workspace
2744
2733
  cloudos datasets cp <source_path> <destination_path> --profile <profile> --destination-project-name <project>
2745
2734
  ```
2746
2735
 
2747
- Any of the `source_path` must be a full path; any `destination_path` must be a path starting with `Data` and finishing with the folder where to move the file/folder.
2736
+ Any of the `source_path` must be a full path; any `destination_path` must be a path starting with `Data` and finishing with the folder where to move the file/folder.
2748
2737
 
2749
2738
  An example of such command is:
2750
2739
 
2751
2740
  ```
2752
- cloudos datasets cp AnalysesResults/my_analysis/results/my_plot.png Data/plots
2741
+ cloudos datasets cp AnalysesResults/my_analysis/results/my_plot.png Data/plots
2753
2742
  ```
2754
2743
 
2755
2744
 
2756
- #### Link S3 Folders to Interactive Analysis
2745
+ #### Link Files and Folders to Interactive Analysis
2757
2746
 
2758
- Connect external S3 buckets or internal File Explorer folders to your interactive analysis sessions. This provides direct access to data without needing to copy files.
2747
+ Connect external S3 buckets, S3 files, or File Explorer files/folders to your interactive analysis sessions. This provides direct access to data without needing to copy files.
2759
2748
 
2760
- This subcommand is using the option `--session-id` to access the correct interactive session. This option can be added to the CLI or defined in a profile, for convenience.
2749
+ This subcommand uses the `--session-id` option to access the correct interactive session. This option can be added to the CLI or defined in a profile, for convenience.
2761
2750
 
2762
2751
  ```bash
2763
- cloudos datasets link <S3_FOLDER_COMPLETE_PATH_OR_VIRTUAL_FOLDER_PATH> --profile <profile> --session-id <SESSION_ID>
2752
+ cloudos datasets link <PATH> --profile <profile> --session-id <SESSION_ID>
2764
2753
  ```
2765
2754
 
2766
- For example, an s3 folder can be linked like follows
2755
+ Link an S3 folder:
2767
2756
  ```console
2768
2757
  cloudos datasets link s3://bucket/path/folder --profile test --session-id 1234
2769
2758
  ```
2770
2759
 
2771
- A virtual folder can be linked like
2772
- ``` concole
2773
- cloudos datasets link "Analyses Results/HLA" --session-id 1234
2760
+ Link an S3 file:
2761
+ ```console
2762
+ cloudos datasets link s3://bucket/path/data.csv --profile test --session-id 1234
2763
+ ```
2764
+
2765
+ Link a File Explorer folder (requires `--project-name`):
2766
+ ```console
2767
+ cloudos datasets link "Data/HLA" --project-name my-project --session-id 1234
2768
+ ```
2769
+
2770
+ Link a File Explorer file (requires `--project-name`):
2771
+ ```console
2772
+ cloudos datasets link "Data/observations.csv" --project-name my-project --session-id 1234
2774
2773
  ```
2775
2774
 
2776
2775
  > [!NOTE]
2777
2776
  > If running the CLI inside a jupyter session, the pre-configured CLI installation will have the session ID already installed and only the `--apikey` needs to be added.
2778
2777
 
2779
2778
  > [!NOTE]
2780
- > Virtual folders in File Explorer, the ones a user has created in File explorer and are not actual storage locations, cannot be linked.
2779
+ > Virtual folders in File Explorer (folders created in File Explorer that are not actual storage locations) cannot be linked.
2780
+
2781
+ > [!NOTE]
2782
+ > A maximum of 100 items can be linked per session. If the new items combined with already-linked items exceed this limit, the entire request is rejected.
2781
2783
 
2782
2784
  #### Create Folder
2783
2785
 
@@ -2787,7 +2789,7 @@ Create new organizational folders within your projects to maintain structured da
2787
2789
  > New folders can be created within the `Data` dataset and its subfolders.
2788
2790
 
2789
2791
  ```bash
2790
- cloudos datasets mkdir <new_folder_path> --profile my_profile
2792
+ cloudos datasets mkdir <new_folder_path> --profile my_profile
2791
2793
  ```
2792
2794
 
2793
2795
  #### Remove Files or Folders
@@ -2795,23 +2797,23 @@ cloudos datasets mkdir <new_folder_path> --profile my_profile
2795
2797
  Remove unnecessary files or empty folders from your File Explorer. Note that this removes files from Lifebit Platform but not from underlying cloud storage.
2796
2798
 
2797
2799
  > [!NOTE]
2798
- > Files and folders can be removed in the `Data` datasets and its subfolders.
2800
+ > Files and folders can be removed in the `Data` datasets and its subfolders.
2799
2801
 
2800
2802
  ```bash
2801
2803
  cloudos datasets rm <path> --profile my_profile
2802
2804
  ```
2803
2805
  > [!NOTE]
2804
2806
  > If a file was uploaded by the user, in order to be removed you must use `--force` and that will permanently remove the file. If the file is "linked" (e.g a s3 folder or file), removing it using `cloudos datasets rm` will not remove it from the the s3 bucket.
2805
-
2807
+
2806
2808
  ---
2807
2809
 
2808
2810
  ### Link
2809
2811
 
2810
- The `cloudos link` command provides a unified interface for linking folders to interactive analysis sessions. This command consolidates functionality previously available through separate commands (`cloudos job results --link`, `cloudos job workdir --link`, `cloudos job logs --link`, and `cloudos datasets link`) into a single, intuitive interface.
2812
+ The `cloudos link` command provides a unified interface for linking files and folders to interactive analysis sessions. This command consolidates functionality previously available through separate commands (`cloudos job results --link`, `cloudos job workdir --link`, `cloudos job logs --link`, and `cloudos datasets link`) into a single, intuitive interface.
2811
2813
 
2812
- #### Link Folders to Interactive Analysis
2814
+ #### Link Files and Folders to Interactive Analysis
2813
2815
 
2814
- Link job-related folders or custom S3 paths to your interactive analysis sessions for direct access to data without needing to copy files.
2816
+ Link job-related folders or custom S3/File Explorer paths (files and folders) to your interactive analysis sessions for direct access to data without needing to copy files.
2815
2817
 
2816
2818
  **Two modes of operation:**
2817
2819
 
@@ -2819,8 +2821,10 @@ Link job-related folders or custom S3 paths to your interactive analysis session
2819
2821
  - By default, links results, workdir, and logs folders
2820
2822
  - Use `--results`, `--workdir`, or `--logs` flags to link only specific folders
2821
2823
 
2822
- 2. **Direct path linking** (PATH argument): Links specific S3 or File Explorer paths. It supports a single path or comma-separated multiple paths.
2823
-
2824
+ 2. **Direct path linking** (PATH argument): Links specific S3 or File Explorer paths (files or folders). Supports a single path or comma-separated multiple paths.
2825
+ - S3 paths whose last segment contains a `.` are treated as files (e.g., `s3://bucket/data/file.csv`)
2826
+ - S3 paths ending with `/` or without an extension are treated as folders
2827
+ - File Explorer paths can point to either files or folders — the CLI detects the type automatically
2824
2828
 
2825
2829
  **Basic usage:**
2826
2830
 
@@ -2832,16 +2836,28 @@ cloudos link --job-id <JOB_ID> --session-id <SESSION_ID> --profile my_profile
2832
2836
  cloudos link --job-id <JOB_ID> --session-id <SESSION_ID> --results --profile my_profile
2833
2837
  cloudos link --job-id <JOB_ID> --session-id <SESSION_ID> --workdir --logs --profile my_profile
2834
2838
 
2835
- # Link a single S3 path
2836
- cloudos link s3://bucket/folder --session-id <SESSION_ID> --profile my_profile
2839
+ # Link a single S3 folder
2840
+ cloudos link s3://bucket/folder/ --session-id <SESSION_ID> --profile my_profile
2837
2841
 
2838
- # Link multiple S3 paths (comma-separated)
2839
- cloudos link s3://bucket1/data,s3://bucket2/results,s3://bucket3/output --session-id <SESSION_ID> --profile my_profile
2842
+ # Link a single S3 file
2843
+ cloudos link s3://bucket/data/file.csv --session-id <SESSION_ID> --profile my_profile
2840
2844
 
2841
- # Link a File Explorer path (requires project name)
2845
+ # Link multiple S3 paths (comma-separated, files and folders mixed)
2846
+ cloudos link s3://bucket1/data/,s3://bucket2/results/file.csv --session-id <SESSION_ID> --profile my_profile
2847
+
2848
+ # Link a File Explorer folder (path is RELATIVE to --project-name; do NOT prepend the project)
2842
2849
  cloudos link "Data/MyFolder" --project-name my-project --session-id <SESSION_ID> --profile my_profile
2850
+
2851
+ # Link a File Explorer file (path is RELATIVE to --project-name)
2852
+ cloudos link "Data/file.csv" --project-name my-project --session-id <SESSION_ID> --profile my_profile
2853
+
2854
+ # Link several File Explorer items at once (all in the same project)
2855
+ cloudos link "Data/MyFolder,Data/file.csv,Results/run-1" --project-name my-project --session-id <SESSION_ID> --profile my_profile
2843
2856
  ```
2844
2857
 
2858
+ > [!IMPORTANT]
2859
+ > **`cloudos link` is single-project for File Explorer paths.** All File Explorer items linked in one invocation must belong to the project named in `--project-name`. The path must be relative to that project — prepending the project name to the path (e.g. `my-project/Data/file.csv`) is rejected. To link items from a different project, run `cloudos link` again with a different `--project-name`.
2860
+
2845
2861
  **Command options:**
2846
2862
 
2847
2863
 
@@ -2851,7 +2867,7 @@ cloudos link "Data/MyFolder" --project-name my-project --session-id <SESSION_ID>
2851
2867
  - `--workspace-id`: The specific Lifebit Platform workspace ID (required)
2852
2868
  - `--session-id`: The specific Lifebit Platform interactive session ID (required)
2853
2869
  - `--job-id`: The job ID in Lifebit Platform (links results, workdir, and logs by default)
2854
- - `--project-name`: Lifebit Platform project name (required for File Explorer paths)
2870
+ - `--project-name`: Lifebit Platform project name. Required when any PATH is a File Explorer path. All FE paths in one invocation must belong to this project and must be RELATIVE to it (do not prepend the project name)
2855
2871
  - `--results`: Link only results folder (only works with `--job-id`)
2856
2872
  - `--workdir`: Link only working directory (only works with `--job-id`)
2857
2873
  - `--logs`: Link only logs folder (only works with `--job-id`)
@@ -2910,7 +2926,7 @@ To list images for a specific procurement, use the following command:
2910
2926
 
2911
2927
  ```bash
2912
2928
  cloudos procurement images ls \
2913
- -- profile procurement_profile
2929
+ -- profile procurement_profile
2914
2930
  --procurement-id "your_procurement_id_here"
2915
2931
  ```
2916
2932
 
@@ -2969,12 +2985,10 @@ cloudos procurement images set --profile procurement_profile --image-type "JobDe
2969
2985
  - `--image-type`: The Lifebit Platform resource image type (required). Possible values:
2970
2986
  - `RegularInteractiveSessions`
2971
2987
  - `SparkInteractiveSessions`
2972
- - `RStudioInteractiveSessions`
2973
- - `JupyterInteractiveSessions`
2974
2988
  - `JobDefault`
2975
2989
  - `NextflowBatchComputeEnvironment`
2976
- - `--provider`: The cloud provider (required). Currently only `aws` is supported
2977
- - `--region`: The cloud region (required). Currently only AWS regions are supported
2990
+ - `--provider`: The cloud provider (required). Currently only supporting `aws` and `azure`.
2991
+ - `--region`: The cloud region (required). Currently only supporting aws and azure regions.
2978
2992
  - `--image-id`: The new image ID value (required)
2979
2993
  - `--image-name`: The new image name value (optional)
2980
2994
  - `--image-version`: The new image version (required)
@@ -3007,7 +3021,7 @@ cloudos procurement images reset --profile procurement_profile --image-type "Job
3007
3021
  - `--organisation-id`: The organization ID where the change will be applied (required)
3008
3022
  - `--image-type`: The Lifebit Platform resource image type (required). Same values as for `set` command
3009
3023
  - `--provider`: The cloud provider (required). Currently only `aws` is supported
3010
- - `--region`: The cloud region (required). Currently only AWS regions are supported
3024
+ - `--region`: The cloud region (required). Currently only supporting aws and azure regions.
3011
3025
  - `--disable-ssl-verification`: Disable SSL certificate verification
3012
3026
  - `--ssl-cert`: Path to your SSL certificate file
3013
3027
  - `--profile`: Profile to use from the config file
@@ -3036,7 +3050,7 @@ Executing status...
3036
3050
  Current Cromwell server status is: Stopped
3037
3051
  ```
3038
3052
 
3039
- ```bash
3053
+ ```bash
3040
3054
  # Cromwell start
3041
3055
  cloudos cromwell start --profile my_profile
3042
3056
  ```
@@ -3262,8 +3276,8 @@ responses>=0.21.0
3262
3276
  mock>=3.0.5
3263
3277
  ```
3264
3278
 
3265
- Command to run tests from the `cloudos-cli` main folder:
3279
+ Command to run tests from the `cloudos-cli` main folder:
3266
3280
 
3267
3281
  ```
3268
3282
  python -m pytest -s -v
3269
- ```
3283
+ ```