cloudos-cli 2.88.2__tar.gz → 2.89.1__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.
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/PKG-INFO +13 -12
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/README.md +12 -11
- cloudos_cli-2.89.1/cloudos_cli/_version.py +1 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/bash/cli.py +1 -26
- cloudos_cli-2.89.1/cloudos_cli/constants.py +75 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/jobs/cli.py +1 -16
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/jobs/job.py +0 -29
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/utils/details.py +197 -152
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli.egg-info/PKG-INFO +13 -12
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli.egg-info/SOURCES.txt +1 -0
- cloudos_cli-2.89.1/tests/test_details.py +444 -0
- cloudos_cli-2.88.2/cloudos_cli/_version.py +0 -1
- cloudos_cli-2.88.2/cloudos_cli/constants.py +0 -28
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/LICENSE +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/__main__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/bash/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/clos.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/configure/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/configure/cli.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/configure/configure.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/cost/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/cost/cost.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/cromwell/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/cromwell/cli.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/datasets/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/datasets/cli.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/datasets/datasets.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/import_wf/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/import_wf/import_wf.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/interactive_session/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/interactive_session/cli.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/interactive_session/interactive_session.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/jobs/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/link/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/link/cli.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/link/link.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/logging/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/logging/logger.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/procurement/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/procurement/cli.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/procurement/images.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/projects/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/projects/cli.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/queue/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/queue/cli.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/queue/queue.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/related_analyses/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/related_analyses/related_analyses.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/utils/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/utils/array_job.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/utils/cli_helpers.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/utils/cloud.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/utils/errors.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/utils/last_wf.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/utils/nextflow_version.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/utils/requests.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/utils/resources.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/workflows/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli/workflows/cli.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli.egg-info/dependency_links.txt +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli.egg-info/entry_points.txt +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli.egg-info/requires.txt +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/cloudos_cli.egg-info/top_level.txt +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/setup.cfg +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/setup.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/tests/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/tests/functions_for_pytest.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/tests/test_cli_project_create.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/tests/test_cost/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/tests/test_cost/test_job_cost.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/tests/test_error_messages.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/tests/test_interactive_session/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/tests/test_interactive_session/test_create_session.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/tests/test_interactive_session/test_list_sessions.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/tests/test_logging/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/tests/test_logging/test_logger.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/tests/test_nextflow_version.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/tests/test_related_analyses/__init__.py +0 -0
- {cloudos_cli-2.88.2 → cloudos_cli-2.89.1}/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.
|
|
3
|
+
Version: 2.89.1
|
|
4
4
|
Summary: Python package for interacting with CloudOS
|
|
5
5
|
Home-page: https://github.com/lifebit-ai/cloudos-cli
|
|
6
6
|
Author: David Piñeyro
|
|
@@ -753,9 +753,8 @@ cloudos job run --profile my_profile --workflow-name rnatoy --job-config cloudos
|
|
|
753
753
|
Please note that HPC execution does not support the following parameters and all of them will be ignored:
|
|
754
754
|
|
|
755
755
|
- `--job-queue`
|
|
756
|
-
- `--resumable |
|
|
756
|
+
- `--resumable` | `--do-not-save-logs`
|
|
757
757
|
- `--instance-type` | `--instance-disk` | `--cost-limit`
|
|
758
|
-
- `--storage-mode` | `--lustre-size`
|
|
759
758
|
- `--wdl-mainfile` | `--wdl-importsfile` | `--cromwell-token`
|
|
760
759
|
|
|
761
760
|
#### Check Job Status
|
|
@@ -800,19 +799,21 @@ The output shows a rich table with job information and pagination details:
|
|
|
800
799
|
```console
|
|
801
800
|
Executing list...
|
|
802
801
|
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
│
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
└────────┴──────────────┴─────────────┴──────────┴──────────────┴─────────────────────────┴──────────────┘
|
|
802
|
+
┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┓
|
|
803
|
+
┃ Status ┃ ID ┃ Pipeline ┃ Name ┃ Project ┃ Owner ┃ Runtime ┃
|
|
804
|
+
┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━┩
|
|
805
|
+
│ ✓ │ 692ee71c40e98ed6ed529e43 │ rnatoy │ analysis_run │ test-proj │ John Doe │ 15m 30s │
|
|
806
|
+
│ ◐ │ 692ee81d50f98ed7fe639f54 │ VEP │ test_job │ research │ Jane Sm… │ 2m 15s │
|
|
807
|
+
└────────┴──────────────────────────┴──────────────┴────────────────┴──────────────┴──────────┴─────────┘
|
|
808
|
+
|
|
809
|
+
Legend: ✓ = Completed | ◐ = Running | ✗ = Failed | ■ = Aborted | ○ = Initialising | ? = Unknown
|
|
812
810
|
|
|
813
811
|
Showing 10 of 45 total jobs | Page 1 of 5
|
|
814
812
|
```
|
|
815
813
|
|
|
814
|
+
> [!NOTE]
|
|
815
|
+
> **Responsive Table Display**: The table automatically adapts to your terminal width, intelligently selecting which columns to display. Narrow terminals show essential columns (Status, ID, Pipeline, Name), while wider terminals progressively add more information (Project, Owner, Runtime, Cost, timestamps, etc.). The table ensures only complete columns are shown and always renders with proper borders.
|
|
816
|
+
|
|
816
817
|
**Status Indicators**
|
|
817
818
|
|
|
818
819
|
Jobs are displayed with colored visual status indicators:
|
|
@@ -718,9 +718,8 @@ cloudos job run --profile my_profile --workflow-name rnatoy --job-config cloudos
|
|
|
718
718
|
Please note that HPC execution does not support the following parameters and all of them will be ignored:
|
|
719
719
|
|
|
720
720
|
- `--job-queue`
|
|
721
|
-
- `--resumable |
|
|
721
|
+
- `--resumable` | `--do-not-save-logs`
|
|
722
722
|
- `--instance-type` | `--instance-disk` | `--cost-limit`
|
|
723
|
-
- `--storage-mode` | `--lustre-size`
|
|
724
723
|
- `--wdl-mainfile` | `--wdl-importsfile` | `--cromwell-token`
|
|
725
724
|
|
|
726
725
|
#### Check Job Status
|
|
@@ -765,19 +764,21 @@ The output shows a rich table with job information and pagination details:
|
|
|
765
764
|
```console
|
|
766
765
|
Executing list...
|
|
767
766
|
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
│
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
└────────┴──────────────┴─────────────┴──────────┴──────────────┴─────────────────────────┴──────────────┘
|
|
767
|
+
┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┓
|
|
768
|
+
┃ Status ┃ ID ┃ Pipeline ┃ Name ┃ Project ┃ Owner ┃ Runtime ┃
|
|
769
|
+
┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━┩
|
|
770
|
+
│ ✓ │ 692ee71c40e98ed6ed529e43 │ rnatoy │ analysis_run │ test-proj │ John Doe │ 15m 30s │
|
|
771
|
+
│ ◐ │ 692ee81d50f98ed7fe639f54 │ VEP │ test_job │ research │ Jane Sm… │ 2m 15s │
|
|
772
|
+
└────────┴──────────────────────────┴──────────────┴────────────────┴──────────────┴──────────┴─────────┘
|
|
773
|
+
|
|
774
|
+
Legend: ✓ = Completed | ◐ = Running | ✗ = Failed | ■ = Aborted | ○ = Initialising | ? = Unknown
|
|
777
775
|
|
|
778
776
|
Showing 10 of 45 total jobs | Page 1 of 5
|
|
779
777
|
```
|
|
780
778
|
|
|
779
|
+
> [!NOTE]
|
|
780
|
+
> **Responsive Table Display**: The table automatically adapts to your terminal width, intelligently selecting which columns to display. Narrow terminals show essential columns (Status, ID, Pipeline, Name), while wider terminals progressively add more information (Project, Owner, Runtime, Cost, timestamps, etc.). The table ensures only complete columns are shown and always renders with proper borders.
|
|
781
|
+
|
|
781
782
|
**Status Indicators**
|
|
782
783
|
|
|
783
784
|
Jobs are displayed with colored visual status indicators:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '2.89.1'
|
|
@@ -75,15 +75,7 @@ def bash():
|
|
|
75
75
|
help='The amount of memory, in GB, to use for the task\'s master node. Default=4.',
|
|
76
76
|
type=int,
|
|
77
77
|
default=4)
|
|
78
|
-
|
|
79
|
-
help=('Either \'lustre\' or \'regular\'. Indicates if the user wants to select ' +
|
|
80
|
-
'regular or lustre storage. Default=regular.'),
|
|
81
|
-
default='regular')
|
|
82
|
-
@click.option('--lustre-size',
|
|
83
|
-
help=('The lustre storage to be used when --storage-mode=lustre, in GB. It should ' +
|
|
84
|
-
'be 1200 or a multiple of it. Default=1200.'),
|
|
85
|
-
type=int,
|
|
86
|
-
default=1200)
|
|
78
|
+
|
|
87
79
|
@click.option('--wait-completion',
|
|
88
80
|
help=('Whether to wait to job completion and report final ' +
|
|
89
81
|
'job status.'),
|
|
@@ -136,8 +128,6 @@ def run_bash_job(ctx,
|
|
|
136
128
|
instance_disk,
|
|
137
129
|
cpus,
|
|
138
130
|
memory,
|
|
139
|
-
storage_mode,
|
|
140
|
-
lustre_size,
|
|
141
131
|
wait_completion,
|
|
142
132
|
wait_time,
|
|
143
133
|
repository_platform,
|
|
@@ -194,8 +184,6 @@ def run_bash_job(ctx,
|
|
|
194
184
|
nextflow_version=None,
|
|
195
185
|
instance_type=instance_type,
|
|
196
186
|
instance_disk=instance_disk,
|
|
197
|
-
storage_mode=storage_mode,
|
|
198
|
-
lustre_size=lustre_size,
|
|
199
187
|
execution_platform=execution_platform,
|
|
200
188
|
hpc_id=None,
|
|
201
189
|
cost_limit=cost_limit,
|
|
@@ -296,15 +284,6 @@ def run_bash_job(ctx,
|
|
|
296
284
|
help='The amount of memory, in GB, to use for the task\'s master node. Default=4.',
|
|
297
285
|
type=int,
|
|
298
286
|
default=4)
|
|
299
|
-
@click.option('--storage-mode',
|
|
300
|
-
help=('Either \'lustre\' or \'regular\'. Indicates if the user wants to select ' +
|
|
301
|
-
'regular or lustre storage. Default=regular.'),
|
|
302
|
-
default='regular')
|
|
303
|
-
@click.option('--lustre-size',
|
|
304
|
-
help=('The lustre storage to be used when --storage-mode=lustre, in GB. It should ' +
|
|
305
|
-
'be 1200 or a multiple of it. Default=1200.'),
|
|
306
|
-
type=int,
|
|
307
|
-
default=1200)
|
|
308
287
|
@click.option('--wait-completion',
|
|
309
288
|
help=('Whether to wait to job completion and report final ' +
|
|
310
289
|
'job status.'),
|
|
@@ -391,8 +370,6 @@ def run_bash_array_job(ctx,
|
|
|
391
370
|
instance_disk,
|
|
392
371
|
cpus,
|
|
393
372
|
memory,
|
|
394
|
-
storage_mode,
|
|
395
|
-
lustre_size,
|
|
396
373
|
wait_completion,
|
|
397
374
|
wait_time,
|
|
398
375
|
repository_platform,
|
|
@@ -525,8 +502,6 @@ def run_bash_array_job(ctx,
|
|
|
525
502
|
nextflow_version=None,
|
|
526
503
|
instance_type=instance_type,
|
|
527
504
|
instance_disk=instance_disk,
|
|
528
|
-
storage_mode=storage_mode,
|
|
529
|
-
lustre_size=lustre_size,
|
|
530
505
|
execution_platform=execution_platform,
|
|
531
506
|
hpc_id=None,
|
|
532
507
|
cost_limit=cost_limit,
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"""Global constants for CloudOS CLI."""
|
|
2
|
+
|
|
3
|
+
# Job status constants
|
|
4
|
+
JOB_COMPLETED = 'completed'
|
|
5
|
+
JOB_FAILED = 'failed'
|
|
6
|
+
JOB_ABORTED = 'aborted'
|
|
7
|
+
|
|
8
|
+
# Nextflow version constants
|
|
9
|
+
AWS_NEXTFLOW_VERSIONS = ['22.10.8', '24.04.4', '25.04.8', '25.10.4']
|
|
10
|
+
AZURE_NEXTFLOW_VERSIONS = ['22.11.1-edge']
|
|
11
|
+
HPC_NEXTFLOW_VERSIONS = ['22.10.8']
|
|
12
|
+
AWS_NEXTFLOW_LATEST = '25.10.4'
|
|
13
|
+
AZURE_NEXTFLOW_LATEST = '22.11.1-edge'
|
|
14
|
+
HPC_NEXTFLOW_LATEST = '22.10.8'
|
|
15
|
+
|
|
16
|
+
# Nextflow version defaults by workflow type
|
|
17
|
+
PLATFORM_WORKFLOW_NEXTFLOW_VERSION = '22.10.8' # For Lifebit Platform workflows (modules)
|
|
18
|
+
USER_WORKFLOW_NEXTFLOW_VERSION = '24.04.4' # For user-imported workflows
|
|
19
|
+
|
|
20
|
+
# Job abort states
|
|
21
|
+
ABORT_JOB_STATES = ['running', 'initializing']
|
|
22
|
+
|
|
23
|
+
# Request interval for Cromwell
|
|
24
|
+
REQUEST_INTERVAL_CROMWELL = 30
|
|
25
|
+
|
|
26
|
+
# Global constants for CloudOS CLI
|
|
27
|
+
CLOUDOS_URL = 'https://cloudos.lifebit.ai'
|
|
28
|
+
INIT_PROFILE = 'initialisingProfile'
|
|
29
|
+
|
|
30
|
+
# Job status symbol mapping
|
|
31
|
+
JOB_STATUS_SYMBOLS = {
|
|
32
|
+
"completed": "[bold green]✓[/bold green]",
|
|
33
|
+
"running": "[bold bright_black]◐[/bold bright_black]",
|
|
34
|
+
"failed": "[bold red]✗[/bold red]",
|
|
35
|
+
"aborted": "[bold orange3]■[/bold orange3]",
|
|
36
|
+
"aborting": "[bold orange3]⊡[/bold orange3]",
|
|
37
|
+
"initialising": "[bold bright_black]○[/bold bright_black]",
|
|
38
|
+
"scheduled": "[bold cyan]◷[/bold cyan]",
|
|
39
|
+
"n/a": "[bold bright_black]?[/bold bright_black]"
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
# Column priority groups for responsive table display
|
|
43
|
+
COLUMN_PRIORITY_GROUPS = {
|
|
44
|
+
'minimal': ['status', 'id', 'name'],
|
|
45
|
+
'essential': ['status', 'id', 'name', 'pipeline'],
|
|
46
|
+
'important': ['project', 'owner', 'run_time', 'cost'],
|
|
47
|
+
'useful': ['submit_time', 'end_time', 'commit'],
|
|
48
|
+
'extended': ['resources', 'storage_type']
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
# Essential columns priority order for auto-selection
|
|
52
|
+
ESSENTIAL_COLUMN_PRIORITY = ['status', 'id', 'name', 'pipeline']
|
|
53
|
+
|
|
54
|
+
# Additional columns priority order for auto-selection
|
|
55
|
+
ADDITIONAL_COLUMN_PRIORITY = [
|
|
56
|
+
'project', 'owner', 'run_time', 'cost',
|
|
57
|
+
'submit_time', 'end_time', 'commit', 'resources', 'storage_type'
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
# Column configurations for job list table
|
|
61
|
+
COLUMN_CONFIGS = {
|
|
62
|
+
'status': {"header": "Status", "style": "cyan", "no_wrap": True, "min_width": 6, "max_width": 6},
|
|
63
|
+
'name': {"header": "Name", "style": "green", "overflow": "fold", "no_wrap": False, "min_width": 6, "max_width": 14},
|
|
64
|
+
'project': {"header": "Project", "style": "magenta", "overflow": "fold", "no_wrap": False, "min_width": 6, "max_width": 18},
|
|
65
|
+
'owner': {"header": "Owner", "style": "blue", "overflow": "fold", "no_wrap": False, "min_width": 4, "max_width": 14},
|
|
66
|
+
'pipeline': {"header": "Pipeline", "style": "yellow", "overflow": "fold", "no_wrap": False, "min_width": 8, "max_width": 14},
|
|
67
|
+
'id': {"header": "ID", "style": "white", "overflow": "ellipsis", "no_wrap": True, "min_width": 24, "max_width": 24},
|
|
68
|
+
'submit_time': {"header": "Submit", "style": "cyan", "no_wrap": True, "min_width": 12, "max_width": 16},
|
|
69
|
+
'end_time': {"header": "End", "style": "cyan", "no_wrap": True, "min_width": 12, "max_width": 16},
|
|
70
|
+
'run_time': {"header": "Runtime", "style": "green", "no_wrap": True, "min_width": 8, "max_width": 12},
|
|
71
|
+
'commit': {"header": "Commit", "style": "magenta", "no_wrap": True, "min_width": 9, "max_width": 10},
|
|
72
|
+
'cost': {"header": "Cost", "style": "yellow", "no_wrap": True, "min_width": 8, "max_width": 12},
|
|
73
|
+
'resources': {"header": "Resources", "style": "blue", "overflow": "ellipsis", "no_wrap": True, "min_width": 8, "max_width": 16},
|
|
74
|
+
'storage_type': {"header": "Storage", "style": "white", "no_wrap": True, "min_width": 8, "max_width": 10}
|
|
75
|
+
}
|
|
@@ -119,15 +119,6 @@ def job():
|
|
|
119
119
|
help='The disk space of the master node instance, in GB. Default=500.',
|
|
120
120
|
type=int,
|
|
121
121
|
default=500)
|
|
122
|
-
@click.option('--storage-mode',
|
|
123
|
-
help=('Either \'lustre\' or \'regular\'. Indicates if the user wants to select ' +
|
|
124
|
-
'regular or lustre storage. Default=regular.'),
|
|
125
|
-
default='regular')
|
|
126
|
-
@click.option('--lustre-size',
|
|
127
|
-
help=('The lustre storage to be used when --storage-mode=lustre, in GB. It should ' +
|
|
128
|
-
'be 1200 or a multiple of it. Default=1200.'),
|
|
129
|
-
type=int,
|
|
130
|
-
default=1200)
|
|
131
122
|
@click.option('--wait-completion',
|
|
132
123
|
help=('Whether to wait to job completion and report final ' +
|
|
133
124
|
'job status.'),
|
|
@@ -219,8 +210,6 @@ def run(ctx,
|
|
|
219
210
|
nextflow_version,
|
|
220
211
|
instance_type,
|
|
221
212
|
instance_disk,
|
|
222
|
-
storage_mode,
|
|
223
|
-
lustre_size,
|
|
224
213
|
wait_completion,
|
|
225
214
|
wait_time,
|
|
226
215
|
wdl_mainfile,
|
|
@@ -267,11 +256,9 @@ def run(ctx,
|
|
|
267
256
|
'\t--job-queue\n' +
|
|
268
257
|
'\t--resumable | --do-not-save-logs\n' +
|
|
269
258
|
'\t--instance-type | --instance-disk | --cost-limit\n' +
|
|
270
|
-
'\t--storage-mode | --lustre-size\n' +
|
|
271
259
|
'\t--wdl-mainfile | --wdl-importsfile | --cromwell-token\n')
|
|
272
260
|
wdl_mainfile = None
|
|
273
261
|
wdl_importsfile = None
|
|
274
|
-
storage_mode = 'regular'
|
|
275
262
|
save_logs = False
|
|
276
263
|
if accelerate_file_staging:
|
|
277
264
|
if execution_platform != 'aws':
|
|
@@ -377,7 +364,7 @@ def run(ctx,
|
|
|
377
364
|
'Docker account to CloudOS before using ' +
|
|
378
365
|
'--use-private-docker-repository option.')
|
|
379
366
|
print('Use private Docker repository has been selected. A custom job ' +
|
|
380
|
-
'queue to support private Docker containers
|
|
367
|
+
'queue to support private Docker containers will be created for ' +
|
|
381
368
|
'your job. The selected job queue will serve as a template.')
|
|
382
369
|
docker_login = True
|
|
383
370
|
else:
|
|
@@ -402,8 +389,6 @@ def run(ctx,
|
|
|
402
389
|
nextflow_version=nextflow_version,
|
|
403
390
|
instance_type=instance_type,
|
|
404
391
|
instance_disk=instance_disk,
|
|
405
|
-
storage_mode=storage_mode,
|
|
406
|
-
lustre_size=lustre_size,
|
|
407
392
|
execution_platform=execution_platform,
|
|
408
393
|
hpc_id=hpc_id,
|
|
409
394
|
workflow_type=workflow_type,
|
|
@@ -309,8 +309,6 @@ class Job(Cloudos):
|
|
|
309
309
|
nextflow_version,
|
|
310
310
|
instance_type,
|
|
311
311
|
instance_disk,
|
|
312
|
-
storage_mode,
|
|
313
|
-
lustre_size,
|
|
314
312
|
execution_platform,
|
|
315
313
|
hpc_id,
|
|
316
314
|
workflow_type,
|
|
@@ -381,12 +379,6 @@ class Job(Cloudos):
|
|
|
381
379
|
Name of the instance type to be used for the job master node, for example for AWS EC2 c5.xlarge
|
|
382
380
|
instance_disk : int
|
|
383
381
|
The disk space of the master node instance, in GB.
|
|
384
|
-
storage_mode : string
|
|
385
|
-
Either 'lustre' or 'regular'. Indicates if the user wants to select regular
|
|
386
|
-
or lustre storage.
|
|
387
|
-
lustre_size : int
|
|
388
|
-
The lustre storage to be used when --storage-mode=lustre, in GB. It should be 1200 or
|
|
389
|
-
a multiple of it.
|
|
390
382
|
execution_platform : string ['aws'|'azure'|'hpc']
|
|
391
383
|
The execution platform implemented in your CloudOS.
|
|
392
384
|
hpc_id : string
|
|
@@ -511,15 +503,6 @@ class Job(Cloudos):
|
|
|
511
503
|
if len(example_parameters) > 0:
|
|
512
504
|
for example_param in example_parameters:
|
|
513
505
|
workflow_params.append(example_param)
|
|
514
|
-
if storage_mode == "lustre":
|
|
515
|
-
click.secho('\nLustre storage has been selected. Please, be sure that this kind of ' +
|
|
516
|
-
'storage is available in your CloudOS workspace.\n', fg='yellow', bold=True)
|
|
517
|
-
if lustre_size % 1200:
|
|
518
|
-
raise ValueError('Please, specify a lustre storage size of 1200 or a multiple of it. ' +
|
|
519
|
-
f'{lustre_size} is not a valid number.')
|
|
520
|
-
if storage_mode not in ['lustre', 'regular']:
|
|
521
|
-
raise ValueError('Please, use either \'lustre\' or \'regular\' for --storage-mode ' +
|
|
522
|
-
f'{storage_mode} is not allowed')
|
|
523
506
|
params = {
|
|
524
507
|
"parameters": workflow_params,
|
|
525
508
|
"project": project_id,
|
|
@@ -534,8 +517,6 @@ class Job(Cloudos):
|
|
|
534
517
|
"computeCostLimit": cost_limit,
|
|
535
518
|
"optim": "test"
|
|
536
519
|
},
|
|
537
|
-
"lusterFsxStorageSizeInGb": lustre_size,
|
|
538
|
-
"storageMode": storage_mode,
|
|
539
520
|
"instanceType": instance_type,
|
|
540
521
|
"usesFusionFileSystem": use_mountpoints,
|
|
541
522
|
"accelerateSavingResults": accelerate_saving_results
|
|
@@ -610,8 +591,6 @@ class Job(Cloudos):
|
|
|
610
591
|
nextflow_version='22.10.8',
|
|
611
592
|
instance_type='c5.xlarge',
|
|
612
593
|
instance_disk=500,
|
|
613
|
-
storage_mode='regular',
|
|
614
|
-
lustre_size=1200,
|
|
615
594
|
execution_platform='aws',
|
|
616
595
|
hpc_id=None,
|
|
617
596
|
workflow_type='nextflow',
|
|
@@ -676,12 +655,6 @@ class Job(Cloudos):
|
|
|
676
655
|
Name of the instance type to be used for the job master node, for example for AWS EC2 c5.xlarge
|
|
677
656
|
instance_disk : int
|
|
678
657
|
The disk space of the master node instance, in GB.
|
|
679
|
-
storage_mode : string
|
|
680
|
-
Either 'lustre' or 'regular'. Indicates if the user wants to select regular
|
|
681
|
-
or lustre storage.
|
|
682
|
-
lustre_size : int
|
|
683
|
-
The lustre storage to be used when --storage-mode=lustre, in GB. It should be 1200 or
|
|
684
|
-
a multiple of it.
|
|
685
658
|
execution_platform : string ['aws'|'azure'|'hpc']
|
|
686
659
|
The execution platform implemented in your CloudOS.
|
|
687
660
|
hpc_id : string
|
|
@@ -751,8 +724,6 @@ class Job(Cloudos):
|
|
|
751
724
|
nextflow_version,
|
|
752
725
|
instance_type,
|
|
753
726
|
instance_disk,
|
|
754
|
-
storage_mode,
|
|
755
|
-
lustre_size,
|
|
756
727
|
execution_platform,
|
|
757
728
|
hpc_id,
|
|
758
729
|
workflow_type,
|