hpc-beeflow 0.1.10.dev0__tar.gz → 0.1.10.dev1__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.
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/PKG-INFO +5 -3
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/README.rst +1 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/client/bee_client.py +69 -25
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/client/core.py +28 -31
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/config_driver.py +81 -55
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/config_validator.py +3 -1
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/crt/charliecloud_driver.py +19 -12
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cwl/cwl.py +136 -52
- hpc_beeflow-0.1.10.dev1/beeflow/common/cwl/examples/Dockerfile.comd-x86_64 +78 -0
- hpc_beeflow-0.1.10.dev1/beeflow/common/cwl/examples/README.txt +51 -0
- hpc_beeflow-0.1.10.dev1/beeflow/common/cwl/examples/cat_grep_tar.py +48 -0
- hpc_beeflow-0.1.10.dev1/beeflow/common/cwl/examples/comd.py +43 -0
- hpc_beeflow-0.1.10.dev1/beeflow/common/cwl/examples/comd_driver.py +82 -0
- hpc_beeflow-0.1.10.dev1/beeflow/common/cwl/workflow.py +172 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/db/client_db.py +17 -7
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/gdb/gdb_driver.py +10 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/gdb/neo4j_cypher.py +52 -9
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/gdb/neo4j_driver.py +11 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/wf_interface.py +7 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/slurm_worker.py +20 -8
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/utils.py +19 -0
- hpc_beeflow-0.1.10.dev1/beeflow/data/cwl/bee_workflows/cat-grep-fail/lorem.txt +49 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/task_manager/utils.py +4 -2
- hpc_beeflow-0.1.10.dev1/beeflow/tests/test_charliecloud_driver.py +70 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_config_driver.py +62 -1
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_db_client.py +6 -0
- hpc_beeflow-0.1.10.dev1/beeflow/tests/test_neo4j_cypher.py +56 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_slurm_worker.py +10 -5
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/wf_manager/resources/wf_actions.py +7 -3
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/wf_manager/resources/wf_list.py +3 -2
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/wf_manager/resources/wf_update.py +9 -5
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/wf_manager/wf_manager.py +0 -2
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/pyproject.toml +2 -2
- hpc_beeflow-0.1.10.dev0/beeflow/common/cwl/examples/cat_grep_tar_driver.py +0 -75
- hpc_beeflow-0.1.10.dev0/beeflow/common/cwl/examples/comd_driver.py +0 -50
- hpc_beeflow-0.1.10.dev0/beeflow/wf_manager/resources/wf_metadata.py +0 -18
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/LICENSE +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/client/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/cloud_launcher.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/api.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/build/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/build/build_driver.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/build/container_drivers.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/build/utils.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/build_interfaces.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cli.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cli_connection.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/__init__.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/chameleoncloud.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/cloud.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/constants.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/google.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/openstack.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/provider.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/config_utils.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/connection.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/container_path.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/crt/crt_driver.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/crt/singularity_driver.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/crt_interface.py +0 -0
- {hpc_beeflow-0.1.10.dev0/beeflow/data/cwl/bee_workflows/cat-grep-fail → hpc_beeflow-0.1.10.dev1/beeflow/common/cwl/examples}/lorem.txt +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/db/bdb.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/db/sched_db.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/db/tm_db.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/db/wfm_db.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/deps/celery_manager.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/deps/container_manager.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/deps/neo4j_manager.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/deps/redis_manager.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/expr.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/gdb/DESIGN.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/gdb/generate_graph.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/gdb/graphml_key_updater.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/integration/generated_workflows.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/integration/utils.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/integration_test.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/log.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/parser/.gitignore +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/parser/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/parser/__init__.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/parser/parser.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/paths.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/states.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/tab_completion.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/validation.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/wf_data.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/wf_profiler.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/__init__.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/flux_worker.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/lsf_worker.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/simple_worker.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/worker.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker_interface.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cloud_templates/dora.jinja +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cloud_templates/dora.yaml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_output.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_output_err.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_split.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_wf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_worker001.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_worker002.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/input/small.fasta +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/cat.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep0.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep1.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/input.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/tar.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/workflow.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.json +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/Dockerfile.clamr-ffmpeg +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_job.json +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/post_run.sh +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/pre_run.sh +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/Dockerfile.clamr-ffmpeg +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_job.json +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/post_run.sh +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/pre_run.sh +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.json +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_job.json +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/lsf-charliecloud/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/lsf-charliecloud/cf-summit.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/Dockerfile.clamr-lanl-x86_64 +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf-darwin.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf-no-owrite.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/copyContainer_containerName.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/dockerFile_containerName.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/dockerPull.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-singularity/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-singularity/cf-singularity.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_job.json +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_job.json +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_job.json +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh_job.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh_wf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/nwchem-mpi/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem_bin.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant/graph.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant_1_node.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant_2_node.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant_4_node.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant_wf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/Dockerfile.pennant-flux-x86_64 +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/Dockerfile.pennant-graph-x86_64 +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/graph.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.sh +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_1_node.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_2_node.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_4_node.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_8_node.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_wf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pytest.ini +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/cancel.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/gc-nc.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/gc.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/lorem.txt +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/builder/dockerFile.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/builder/dockerPull.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/grep-wordcount/gc.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/grep-wordcount/lorem.txt +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/helloworld.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/helloworld_input.yaml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/DAG_example-1.png +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add_multiply_example_workflow.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add_step1.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/isolated test.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/job.yaml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/multiply.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/multiply_step2.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/workflow_generater_python.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree_output.txt +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree_tool.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/expectedValue.txt +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/hiring1.txt +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/linear_regress_output.txt +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/linear_regression.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/machinelearning_pipeline.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/out.PNG +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/predict_code.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/predict_tool.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/read_dataset.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/read_dataset_tool.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/regress_tool.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.builder_demo +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.clamr-ffmpeg +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.clamr-lanl-x86_64 +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.clamr-ppc64le +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.comd-flux-x86_64 +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.deb9ompi-x86_64 +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.lulesh-x86_64 +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.neo4j +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.nwchem-x86_64 +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.pennant-flux-x86_64 +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.vaspompi-x86_64 +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.comd-x86_64-wpmix +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.debian +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.openmpi-3.1.5 +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/comd-pmix-support/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/comd-pmix-support/dont-init-ucx-on-intel-cray.patch +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/pennant-graph/Dockerfile.pennant-graph-x86_64 +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.sh +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/remote/remote.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/algorithms.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/resource_allocation.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/scheduler.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/scheduler.yaml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/serializable.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/task.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/task_manager/background.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/task_manager/task_actions.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/task_manager/task_manager.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/task_manager/task_submit.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/42.tgz +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/README.md +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/cf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/clamr.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/clamr_job.json +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/mv_script.cwl +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/mv_script.sh +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf.tgz +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/gdb.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/mocks.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_cloud.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_config_utils.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_config_validator.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_container_path.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_db_sched.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_db_tm.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_parser.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_scheduler.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_scheduler_resource_allocation.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_scheduler_rest.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_tm.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_wf_interface.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_wf_manager.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/wf_manager/common/wf_db.py +0 -0
- {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/wf_manager/resources/wf_utils.py +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: hpc-beeflow
|
|
3
|
-
Version: 0.1.10.
|
|
3
|
+
Version: 0.1.10.dev1
|
|
4
4
|
Summary: A software package for containerizing HPC applications and managing job workflows
|
|
5
5
|
Home-page: https://github.com/lanl/BEE
|
|
6
6
|
Keywords: bee,hpc,workflow,cluster,computing
|
|
7
7
|
Author: BEE-LANL Dev Team
|
|
8
8
|
Author-email: bee-dev@lanl.gov
|
|
9
|
-
Requires-Python: >=3.8.3,<=3.
|
|
9
|
+
Requires-Python: >=3.8.3,<=3.13.0
|
|
10
10
|
Classifier: Environment :: Console
|
|
11
11
|
Classifier: Environment :: OpenStack
|
|
12
12
|
Classifier: Environment :: Other Environment
|
|
@@ -19,7 +19,8 @@ Classifier: Programming Language :: Python :: 3
|
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.9
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.10
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
-
Classifier: Programming Language :: Python :: 3
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
24
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
24
25
|
Classifier: Topic :: Scientific/Engineering
|
|
25
26
|
Classifier: Topic :: System :: Clustering
|
|
@@ -110,6 +111,7 @@ Contributors:
|
|
|
110
111
|
* Patricia Grubel - `pagrubel <https://github.com/pagrubel>`_
|
|
111
112
|
* Qiang Guan - `guanxyz <https://github.com/guanxyz>`_
|
|
112
113
|
* Ragini Gupta - `raginigupta6 <https://github.com/raginigupta6>`_
|
|
114
|
+
* Aaron R Hall - `arhall0 <https://github.com/arhall0>`_
|
|
113
115
|
* Leah Howell - `Leahh02 <https://github.com/Leahh02>`_
|
|
114
116
|
* Andres Quan - `aquan9 <https://github.com/aquan9>`_
|
|
115
117
|
* Quincy Wofford - `qwofford <https://github.com/qwofford>`_
|
|
@@ -56,6 +56,7 @@ Contributors:
|
|
|
56
56
|
* Patricia Grubel - `pagrubel <https://github.com/pagrubel>`_
|
|
57
57
|
* Qiang Guan - `guanxyz <https://github.com/guanxyz>`_
|
|
58
58
|
* Ragini Gupta - `raginigupta6 <https://github.com/raginigupta6>`_
|
|
59
|
+
* Aaron R Hall - `arhall0 <https://github.com/arhall0>`_
|
|
59
60
|
* Leah Howell - `Leahh02 <https://github.com/Leahh02>`_
|
|
60
61
|
* Andres Quan - `aquan9 <https://github.com/aquan9>`_
|
|
61
62
|
* Quincy Wofford - `qwofford <https://github.com/qwofford>`_
|
|
@@ -11,6 +11,7 @@ import inspect
|
|
|
11
11
|
import pathlib
|
|
12
12
|
import shutil
|
|
13
13
|
import subprocess
|
|
14
|
+
import getpass
|
|
14
15
|
import tarfile
|
|
15
16
|
import tempfile
|
|
16
17
|
import textwrap
|
|
@@ -79,15 +80,78 @@ def get_hostname():
|
|
|
79
80
|
return curr_hn
|
|
80
81
|
|
|
81
82
|
|
|
83
|
+
def set_backend_status(new_status):
|
|
84
|
+
"""Set backend flag to true in database."""
|
|
85
|
+
db = bdb.connect_db(client_db, db_path())
|
|
86
|
+
db.info.set_backend_status(new_status)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def check_backend_status():
|
|
90
|
+
"""Check if backend flag has been set."""
|
|
91
|
+
db = bdb.connect_db(client_db, db_path())
|
|
92
|
+
status = db.info.get_backend_status()
|
|
93
|
+
return status
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def reset_client_db():
|
|
97
|
+
"""Reset client db when beeflow is stopped."""
|
|
98
|
+
setup_hostname("")
|
|
99
|
+
set_backend_status("")
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def check_backend_jobs(start_hn, command=False):
|
|
103
|
+
"""Check if there is an instance of beeflow running on a backend node."""
|
|
104
|
+
user_name = getpass.getuser()
|
|
105
|
+
cmd = ['squeue', '-u', f'{user_name}', '-o', '%N', '-h']
|
|
106
|
+
resp = subprocess.run(cmd, text=True, check=True, stdout=subprocess.PIPE)
|
|
107
|
+
|
|
108
|
+
# iterate through available nodes
|
|
109
|
+
data = resp.stdout.splitlines()
|
|
110
|
+
cur_alloc = False
|
|
111
|
+
if get_hostname() in data:
|
|
112
|
+
cur_alloc = True
|
|
113
|
+
|
|
114
|
+
if cur_alloc:
|
|
115
|
+
if command:
|
|
116
|
+
warn(f'beeflow was started on "{get_hostname()}" and you are trying to '
|
|
117
|
+
f'run a command on "{start_hn}".')
|
|
118
|
+
sys.exit(1)
|
|
119
|
+
else:
|
|
120
|
+
warn(f'beeflow was started on compute node "{get_hostname()}" '
|
|
121
|
+
'and it is still running. ')
|
|
122
|
+
sys.exit(1)
|
|
123
|
+
else: # beeflow was started on compute node but user no longer owns node
|
|
124
|
+
if command:
|
|
125
|
+
warn('beeflow has not been started!')
|
|
126
|
+
sys.exit(1)
|
|
127
|
+
else:
|
|
128
|
+
warn('beeflow was started on a compute node (no longer owned by user) and '
|
|
129
|
+
'not stopped correctly. ')
|
|
130
|
+
warn("Resetting client database.")
|
|
131
|
+
reset_client_db()
|
|
132
|
+
setup_hostname(start_hn) # add to client db
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def check_db_flags(start_hn):
|
|
136
|
+
"""Check that beeflow was stopped correctly during the last run."""
|
|
137
|
+
if get_hostname() and get_hostname() != start_hn and check_backend_status() == "":
|
|
138
|
+
warn(f'Error: beeflow is already running on "{get_hostname()}".')
|
|
139
|
+
sys.exit(1)
|
|
140
|
+
if get_hostname() and get_hostname() != start_hn and check_backend_status() == "true":
|
|
141
|
+
check_backend_jobs(start_hn)
|
|
142
|
+
|
|
143
|
+
|
|
82
144
|
def check_hostname(curr_hn):
|
|
83
145
|
"""Check current front end name matches the one beeflow was started on."""
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if start_hn and curr_hn != start_hn: # noqa: don't use set instead
|
|
87
|
-
warn(f'beeflow was started on "{start_hn}" and you are trying to '
|
|
146
|
+
if get_hostname() and curr_hn != get_hostname() and check_backend_status() == "":
|
|
147
|
+
warn(f'beeflow was started on "{get_hostname()}" and you are trying to '
|
|
88
148
|
f'run a command on "{curr_hn}".')
|
|
89
|
-
|
|
149
|
+
sys.exit(1)
|
|
150
|
+
elif get_hostname() and curr_hn != get_hostname() and check_backend_status() == "true":
|
|
151
|
+
check_backend_jobs(curr_hn, command=True)
|
|
152
|
+
if get_hostname() == "" and check_backend_status() == "":
|
|
90
153
|
warn('beeflow has not been started!')
|
|
154
|
+
sys.exit(1)
|
|
91
155
|
|
|
92
156
|
|
|
93
157
|
def error_exit(msg, include_caller=True):
|
|
@@ -515,25 +579,6 @@ def query(wf_id: str = typer.Argument(..., callback=match_short_id)):
|
|
|
515
579
|
return wf_status, tasks_status
|
|
516
580
|
|
|
517
581
|
|
|
518
|
-
@app.command()
|
|
519
|
-
def metadata(wf_id: str = typer.Argument(..., callback=match_short_id)):
|
|
520
|
-
"""Get metadata about a given workflow."""
|
|
521
|
-
try:
|
|
522
|
-
conn = _wfm_conn()
|
|
523
|
-
resp = conn.get(_resource(wf_id) + '/metadata', timeout=60)
|
|
524
|
-
except requests.exceptions.ConnectionError:
|
|
525
|
-
error_exit('Could not reach WF Manager.')
|
|
526
|
-
|
|
527
|
-
if resp.status_code != requests.codes.okay: # noqa (pylama doesn't know about the okay member)
|
|
528
|
-
error_exit('Could not successfully query workflow manager')
|
|
529
|
-
|
|
530
|
-
# Print and or return the metadata
|
|
531
|
-
data = resp.json()
|
|
532
|
-
for key, value in data.items():
|
|
533
|
-
typer.echo(f'{key} = {value}')
|
|
534
|
-
return data
|
|
535
|
-
|
|
536
|
-
|
|
537
582
|
@app.command()
|
|
538
583
|
def pause(wf_id: str = typer.Argument(..., callback=match_short_id)):
|
|
539
584
|
"""Pause a workflow (Running tasks will finish)."""
|
|
@@ -723,5 +768,4 @@ if __name__ == "__main__":
|
|
|
723
768
|
|
|
724
769
|
# Ignore W0511: This allows us to have TODOs in the code
|
|
725
770
|
# Ignore R1732: Significant code restructuring required to fix
|
|
726
|
-
# Ignore R1714: Not using a set instead
|
|
727
771
|
# pylama:ignore=W0511,R1732
|
|
@@ -9,7 +9,6 @@ services is specified using the appropriate flag(s) then ONLY those services
|
|
|
9
9
|
will be started.
|
|
10
10
|
"""
|
|
11
11
|
import os
|
|
12
|
-
import re
|
|
13
12
|
import signal
|
|
14
13
|
import subprocess
|
|
15
14
|
import socket
|
|
@@ -19,7 +18,6 @@ import datetime
|
|
|
19
18
|
import time
|
|
20
19
|
import importlib.metadata
|
|
21
20
|
from pathlib import Path
|
|
22
|
-
import packaging
|
|
23
21
|
|
|
24
22
|
import daemon
|
|
25
23
|
import typer
|
|
@@ -31,6 +29,7 @@ from beeflow.common.config_driver import AlterConfig
|
|
|
31
29
|
from beeflow.common import cli_connection
|
|
32
30
|
from beeflow.common import paths
|
|
33
31
|
from beeflow.wf_manager.resources import wf_utils
|
|
32
|
+
import beeflow.common.worker.utils as worker_utils
|
|
34
33
|
|
|
35
34
|
from beeflow.common.deps import container_manager
|
|
36
35
|
from beeflow.common.deps import neo4j_manager
|
|
@@ -168,22 +167,6 @@ def need_slurmrestd():
|
|
|
168
167
|
and not bc.get('slurm', 'use_commands'))
|
|
169
168
|
|
|
170
169
|
|
|
171
|
-
def get_slurmrestd_version():
|
|
172
|
-
"""Get the newest slurmrestd version."""
|
|
173
|
-
resp = subprocess.run(["slurmrestd", "-s", "list"], check=True, stderr=subprocess.PIPE,
|
|
174
|
-
text=True).stderr
|
|
175
|
-
resp = resp.split("\n")
|
|
176
|
-
# Confirm slurmrestd format is the same
|
|
177
|
-
# If the slurmrestd list outputs has changed potentially something else has broken
|
|
178
|
-
if "Possible OpenAPI plugins" not in resp[0]:
|
|
179
|
-
print("Slurmrestd OpenAPI format has changed and things may break")
|
|
180
|
-
api_versions = [line.split('/')[1] for line in resp[1:] if re.search(r"openapi/v\d+\.\d+\.\d+",
|
|
181
|
-
line)]
|
|
182
|
-
# Sort the versions and grab the newest one
|
|
183
|
-
newest_api = sorted(api_versions, key=packaging.version.Version, reverse=True)[0]
|
|
184
|
-
return newest_api
|
|
185
|
-
|
|
186
|
-
|
|
187
170
|
def init_components():
|
|
188
171
|
"""Initialize the components and component manager."""
|
|
189
172
|
mgr = ComponentManager()
|
|
@@ -265,10 +248,8 @@ def init_components():
|
|
|
265
248
|
"""Start BEESlurmRestD. Returns a Popen process object."""
|
|
266
249
|
bee_workdir = bc.get('DEFAULT', 'bee_workdir')
|
|
267
250
|
slurmrestd_log = '/'.join([bee_workdir, 'logs', 'restd.log'])
|
|
268
|
-
openapi_version =
|
|
269
|
-
|
|
270
|
-
# Detect the newest version of the slurmrestd API
|
|
271
|
-
openapi_version = get_slurmrestd_version()
|
|
251
|
+
openapi_version = worker_utils.get_slurmrestd_version()
|
|
252
|
+
print(f"Inferred slurmrestd version: {openapi_version}")
|
|
272
253
|
slurm_args = f'-s openapi/{openapi_version}'
|
|
273
254
|
# The following adds the db plugin we opted not to use for now
|
|
274
255
|
# slurm_args = f'-s openapi/{openapi_version},openapi/db{openapi_version}'
|
|
@@ -325,11 +306,22 @@ def load_check_charliecloud():
|
|
|
325
306
|
|
|
326
307
|
def check_dependencies(backend=False):
|
|
327
308
|
"""Check for various dependencies in the environment."""
|
|
328
|
-
#
|
|
309
|
+
# Note: Code block of lines 309-320 is for SLURM scheduler!
|
|
310
|
+
# Check if running on compute node under Slurm scheduler and --backend not specified
|
|
329
311
|
if not backend and os.environ.get('SLURM_JOB_NODELIST') is not None:
|
|
330
|
-
warn('Slurm job node detected! Beeflow should not be run on a compute node.')
|
|
312
|
+
warn('Slurm job node detected! Beeflow should not be run on a compute node. ')
|
|
331
313
|
warn(f'SLURM_JOB_NODELIST = {os.environ.get("SLURM_JOB_NODELIST")}')
|
|
314
|
+
bee_client.reset_client_db()
|
|
332
315
|
sys.exit(1)
|
|
316
|
+
# Check if running on front end with --backend flag specified
|
|
317
|
+
if backend and os.environ.get('SLURM_JOB_NODELIST') is None:
|
|
318
|
+
warn('Slurm node was not detected! Are you sure you are on a compute node? ')
|
|
319
|
+
warn("Please run 'beeflow core start' again without the --backend flag.")
|
|
320
|
+
bee_client.reset_client_db()
|
|
321
|
+
sys.exit(1)
|
|
322
|
+
|
|
323
|
+
# TO DO: Add checks when using Flux scheduler
|
|
324
|
+
|
|
333
325
|
print('Checking dependencies...')
|
|
334
326
|
# Check for Charliecloud and its version
|
|
335
327
|
load_check_charliecloud()
|
|
@@ -416,13 +408,15 @@ def start(foreground: bool = typer.Option(False, '--foreground', '-F',
|
|
|
416
408
|
'-B', help='allow to run on a backend node')):
|
|
417
409
|
"""Start all BEE components."""
|
|
418
410
|
start_hn = socket.gethostname() # hostname when beeflow starts
|
|
419
|
-
if bee_client.get_hostname() == "":
|
|
411
|
+
if bee_client.get_hostname() == "" and bee_client.check_backend_status() == "":
|
|
420
412
|
bee_client.setup_hostname(start_hn) # add to client db
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
413
|
+
else:
|
|
414
|
+
time.sleep(10) # giving Slurm time to relinquish compute node, if necessary
|
|
415
|
+
bee_client.check_db_flags(start_hn)
|
|
416
|
+
|
|
424
417
|
if backend: # allow beeflow to run on backend node
|
|
425
418
|
check_dependencies(backend=True)
|
|
419
|
+
bee_client.set_backend_status("true") # add flag to db
|
|
426
420
|
else:
|
|
427
421
|
check_dependencies()
|
|
428
422
|
mgr = init_components()
|
|
@@ -470,9 +464,10 @@ def start(foreground: bool = typer.Option(False, '--foreground', '-F',
|
|
|
470
464
|
def status():
|
|
471
465
|
"""Check the status of beeflow and the components."""
|
|
472
466
|
status_hn = socket.gethostname() # hostname when beeflow core status returned
|
|
467
|
+
bee_client.check_hostname(status_hn)
|
|
473
468
|
resp = cli_connection.send(paths.beeflow_socket(), {'type': 'status'})
|
|
474
469
|
if resp is None:
|
|
475
|
-
bee_client.check_hostname(status_hn)
|
|
470
|
+
# bee_client.check_hostname(status_hn) # need to remove since checked in line 465?
|
|
476
471
|
sys.exit(1)
|
|
477
472
|
print('beeflow components:')
|
|
478
473
|
for comp, stat in resp['components'].items():
|
|
@@ -492,6 +487,7 @@ def info():
|
|
|
492
487
|
def stop(query='yes'):
|
|
493
488
|
"""Stop the current running beeflow daemon."""
|
|
494
489
|
stop_hn = socket.gethostname() # hostname when beeflow core stop returned
|
|
490
|
+
bee_client.check_hostname(stop_hn)
|
|
495
491
|
# Check workflow states; warn if there are active states, pause running workflows
|
|
496
492
|
workflow_list = bee_client.get_wf_list()
|
|
497
493
|
concern_states = {'Running', 'Initializing', 'Waiting'}
|
|
@@ -514,13 +510,13 @@ def stop(query='yes'):
|
|
|
514
510
|
bee_client.pause(wf_id)
|
|
515
511
|
resp = cli_connection.send(paths.beeflow_socket(), {'type': 'quit'})
|
|
516
512
|
if resp is None:
|
|
517
|
-
bee_client.check_hostname(stop_hn)
|
|
513
|
+
# bee_client.check_hostname(stop_hn) # need to remove since checked in line 487?
|
|
518
514
|
sys.exit(1)
|
|
519
515
|
# As long as it returned something, we should be good
|
|
520
516
|
beeflow_log = paths.log_fname('beeflow')
|
|
521
517
|
if query == "yes":
|
|
522
518
|
print(f'Beeflow has stopped. Check the log at "{beeflow_log}".')
|
|
523
|
-
bee_client.
|
|
519
|
+
bee_client.reset_client_db()
|
|
524
520
|
|
|
525
521
|
|
|
526
522
|
def archive_dir(dir_to_archive):
|
|
@@ -579,6 +575,7 @@ def reset(archive: bool = typer.Option(False, '--archive', '-a',
|
|
|
579
575
|
Shutdown beeflow and all BEE components.
|
|
580
576
|
Delete the bee_workdir directory which results in:
|
|
581
577
|
Removing the archive of all workflows.
|
|
578
|
+
(unless archives is configured elsewhere).
|
|
582
579
|
Removing the archive of workflow containers
|
|
583
580
|
(unless container_archive is configured elsewhere).
|
|
584
581
|
Reset all databases associated with the beeflow app.
|
|
@@ -105,7 +105,7 @@ class BeeConfig:
|
|
|
105
105
|
break
|
|
106
106
|
except FileNotFoundError:
|
|
107
107
|
print("Configuration file is missing! Generating new config file.")
|
|
108
|
-
new(USERCONFIG_FILE)
|
|
108
|
+
new(USERCONFIG_FILE, interactive=False)
|
|
109
109
|
# remove default keys from the other sections
|
|
110
110
|
cls.CONFIG = config_utils.filter_and_validate(config, VALIDATOR)
|
|
111
111
|
|
|
@@ -222,6 +222,7 @@ DEFAULT_NEO4J_IMAGE = join_path('/usr/projects/BEE/neo4j.tar.gz')
|
|
|
222
222
|
DEFAULT_REDIS_IMAGE = join_path('/usr/projects/BEE/redis.tar.gz')
|
|
223
223
|
|
|
224
224
|
DEFAULT_BEE_WORKDIR = join_path(HOME_DIR, '.beeflow')
|
|
225
|
+
DEFAULT_BEE_ARCHIVE_DIR = join_path(DEFAULT_BEE_WORKDIR, 'archives')
|
|
225
226
|
DEFAULT_BEE_DROPPOINT = join_path(HOME_DIR, '.beeflow/droppoint')
|
|
226
227
|
USER = getpass.getuser()
|
|
227
228
|
|
|
@@ -240,33 +241,39 @@ VALIDATOR = ConfigValidator('BEE configuration file and validation information.'
|
|
|
240
241
|
VALIDATOR.section('DEFAULT', info='Default bee.conf configuration section.')
|
|
241
242
|
|
|
242
243
|
VALIDATOR.option('DEFAULT', 'bee_workdir', info='main BEE workdir',
|
|
243
|
-
default=DEFAULT_BEE_WORKDIR, validator=validation.make_dir
|
|
244
|
+
default=DEFAULT_BEE_WORKDIR, validator=validation.make_dir,
|
|
245
|
+
prompt=True)
|
|
246
|
+
|
|
247
|
+
VALIDATOR.option('DEFAULT', 'bee_archive_dir', info='directory to store workflow archives',
|
|
248
|
+
default=DEFAULT_BEE_ARCHIVE_DIR, validator=validation.make_dir,
|
|
249
|
+
prompt=True)
|
|
244
250
|
|
|
245
251
|
VALIDATOR.option('DEFAULT', 'bee_droppoint', info='BEE remote workflow drop point',
|
|
246
|
-
default=DEFAULT_BEE_DROPPOINT, validator=validation.make_dir
|
|
252
|
+
default=DEFAULT_BEE_DROPPOINT, validator=validation.make_dir,
|
|
253
|
+
prompt=False)
|
|
247
254
|
|
|
248
255
|
VALIDATOR.option('DEFAULT', 'remote_api', info='BEE remote REST API activation',
|
|
249
|
-
default=False, validator=validation.bool_)
|
|
256
|
+
default=False, validator=validation.bool_, prompt=False)
|
|
250
257
|
|
|
251
258
|
VALIDATOR.option('DEFAULT', 'remote_api_port', info='BEE remote REST API port',
|
|
252
|
-
default=7777, validator=int)
|
|
259
|
+
default=7777, validator=int, prompt=False)
|
|
253
260
|
|
|
254
261
|
VALIDATOR.option('DEFAULT', 'workload_scheduler', choices=('Slurm', 'LSF', 'Flux', 'Simple'),
|
|
255
|
-
info='backend workload scheduler to interact with '
|
|
262
|
+
default='Slurm', info='backend workload scheduler to interact with ',
|
|
263
|
+
prompt=True)
|
|
256
264
|
|
|
257
265
|
VALIDATOR.option('DEFAULT', 'delete_completed_workflow_dirs', validator=validation.bool_,
|
|
258
|
-
default=True, info='delete workflow directory for completed jobs')
|
|
266
|
+
default=True, info='delete workflow directory for completed jobs', prompt=False)
|
|
259
267
|
|
|
260
268
|
VALIDATOR.option('DEFAULT', 'neo4j_image', validator=validation.file_,
|
|
261
269
|
default=NEO4J_IMAGE, info='neo4j container image',
|
|
262
|
-
input_fn=filepath_completion_input)
|
|
270
|
+
input_fn=filepath_completion_input, prompt=True)
|
|
263
271
|
|
|
264
272
|
VALIDATOR.option('DEFAULT', 'redis_image', validator=validation.file_,
|
|
265
273
|
default=REDIS_IMAGE, info='redis container image',
|
|
266
|
-
input_fn=filepath_completion_input)
|
|
274
|
+
input_fn=filepath_completion_input, prompt=True)
|
|
267
275
|
|
|
268
|
-
VALIDATOR.option('DEFAULT', 'max_restarts', validator=int,
|
|
269
|
-
default=3,
|
|
276
|
+
VALIDATOR.option('DEFAULT', 'max_restarts', validator=int, default=3, prompt=False,
|
|
270
277
|
info='max number of times beeflow will restart a component on failure')
|
|
271
278
|
|
|
272
279
|
# Workflow Manager
|
|
@@ -275,27 +282,31 @@ VALIDATOR.section('workflow_manager', info='Workflow manager section.')
|
|
|
275
282
|
VALIDATOR.section('task_manager',
|
|
276
283
|
info='Task manager configuration and config of container to use.')
|
|
277
284
|
VALIDATOR.option('task_manager', 'container_runtime', default='Charliecloud',
|
|
278
|
-
choices=('Charliecloud', 'Singularity'),
|
|
285
|
+
choices=('Charliecloud', 'Singularity'), prompt=False,
|
|
279
286
|
info='container runtime to use for configuration')
|
|
280
|
-
VALIDATOR.option('task_manager', 'runner_opts', default='',
|
|
287
|
+
VALIDATOR.option('task_manager', 'runner_opts', default='', prompt=False,
|
|
281
288
|
info='special runner options to pass to the runner opts')
|
|
282
289
|
VALIDATOR.option('task_manager', 'background_interval', default=5,
|
|
283
|
-
validator=int,
|
|
290
|
+
validator=int, prompt=False,
|
|
284
291
|
info='interval at which the task manager processes queues and updates states')
|
|
285
292
|
|
|
286
293
|
# Charliecloud (depends on task_manager::container_runtime == Charliecloud)
|
|
287
294
|
VALIDATOR.section('charliecloud', info='Charliecloud configuration section.',
|
|
288
295
|
depends_on=('task_manager', 'container_runtime', 'Charliecloud'))
|
|
289
|
-
VALIDATOR.option('charliecloud', 'image_mntdir', default=join_path('/tmp', USER),
|
|
296
|
+
VALIDATOR.option('charliecloud', 'image_mntdir', default=join_path('/tmp', USER), prompt=False,
|
|
290
297
|
info='Charliecloud mount directory', validator=validation.make_dir)
|
|
291
298
|
# General job requirements
|
|
292
299
|
VALIDATOR.section('job', info='General job requirements.')
|
|
293
|
-
VALIDATOR.option('job', 'default_account', validator=lambda val: val.strip(),
|
|
294
|
-
info='default account to launch jobs with (leave blank if none)')
|
|
295
|
-
VALIDATOR.option('job', 'default_time_limit', validator=validation.time_limit,
|
|
296
|
-
info='default account time limit (leave blank if none)')
|
|
297
|
-
VALIDATOR.option('job', 'default_partition', validator=lambda val: val.strip(),
|
|
298
|
-
info='default partition to run jobs on (leave blank if none)')
|
|
300
|
+
VALIDATOR.option('job', 'default_account', validator=lambda val: val.strip(), prompt=True,
|
|
301
|
+
default='', info='default account to launch jobs with (leave blank if none)')
|
|
302
|
+
VALIDATOR.option('job', 'default_time_limit', validator=validation.time_limit, prompt=True,
|
|
303
|
+
default='', info='default account time limit (leave blank if none)')
|
|
304
|
+
VALIDATOR.option('job', 'default_partition', validator=lambda val: val.strip(), prompt=True,
|
|
305
|
+
default='', info='default partition to run jobs on (leave blank if none)')
|
|
306
|
+
VALIDATOR.option('job', 'default_qos', validator=lambda val: val.strip(), prompt=True,
|
|
307
|
+
default='', info='default qos to run jobs on (leave blank if none)')
|
|
308
|
+
VALIDATOR.option('job', 'default_reservation', validator=lambda val: val.strip(), prompt=True,
|
|
309
|
+
default='', info='default reservation to run jobs on (leave blank if none)')
|
|
299
310
|
|
|
300
311
|
|
|
301
312
|
def validate_chrun_opts(opts):
|
|
@@ -309,49 +320,49 @@ def validate_chrun_opts(opts):
|
|
|
309
320
|
|
|
310
321
|
|
|
311
322
|
VALIDATOR.option('charliecloud', 'chrun_opts', default='--home',
|
|
312
|
-
validator=validate_chrun_opts,
|
|
323
|
+
validator=validate_chrun_opts, prompt=False,
|
|
313
324
|
info='extra options to pass to ch-run')
|
|
314
|
-
VALIDATOR.option('charliecloud', 'setup', default='',
|
|
325
|
+
VALIDATOR.option('charliecloud', 'setup', default='', prompt=False,
|
|
315
326
|
info='extra Charliecloud setup to put in a job script')
|
|
316
327
|
# Graph Database
|
|
317
328
|
VALIDATOR.section('graphdb', info='Main graph database configuration section.')
|
|
318
|
-
VALIDATOR.option('graphdb', 'hostname', default='localhost',
|
|
329
|
+
VALIDATOR.option('graphdb', 'hostname', default='localhost', prompt=False,
|
|
319
330
|
info='hostname of database')
|
|
320
331
|
|
|
321
|
-
VALIDATOR.option('graphdb', 'dbpass', default='password', info='password for database'
|
|
332
|
+
VALIDATOR.option('graphdb', 'dbpass', default='password', info='password for database',
|
|
333
|
+
prompt=False)
|
|
322
334
|
|
|
323
|
-
VALIDATOR.option('graphdb', 'gdb_image_mntdir', default=join_path('/tmp', USER),
|
|
335
|
+
VALIDATOR.option('graphdb', 'gdb_image_mntdir', default=join_path('/tmp', USER), prompt=False,
|
|
324
336
|
info='graph database image mount directory', validator=validation.make_dir)
|
|
325
|
-
VALIDATOR.option('graphdb', 'sleep_time', validator=int, default=1,
|
|
337
|
+
VALIDATOR.option('graphdb', 'sleep_time', validator=int, default=1, prompt=False,
|
|
326
338
|
info='how long to wait for the graph database to come up (this can take a while, '
|
|
327
339
|
'depending on the system)')
|
|
328
340
|
# Builder
|
|
329
341
|
VALIDATOR.section('builder', info='General builder configuration section.')
|
|
330
|
-
VALIDATOR.option('builder', 'deployed_image_root', default='/tmp',
|
|
342
|
+
VALIDATOR.option('builder', 'deployed_image_root', default='/tmp', prompt=False,
|
|
331
343
|
info='where to deploy container images', validator=validation.make_dir)
|
|
332
|
-
VALIDATOR.option('builder', 'container_output_path', default='/tmp',
|
|
344
|
+
VALIDATOR.option('builder', 'container_output_path', default='/tmp', prompt=False,
|
|
333
345
|
info='container output path', validator=validation.make_dir)
|
|
334
|
-
VALIDATOR.option('builder', 'container_archive',
|
|
346
|
+
VALIDATOR.option('builder', 'container_archive', prompt=True,
|
|
335
347
|
default=join_path(DEFAULT_BEE_WORKDIR, 'container_archive'),
|
|
336
348
|
info='container archive location')
|
|
337
349
|
VALIDATOR.option('builder', 'container_type', default='charliecloud',
|
|
338
|
-
info='container type to use')
|
|
350
|
+
info='container type to use', prompt=False)
|
|
339
351
|
# Slurmrestd (depends on DEFAULT:workload_scheduler == Slurm)
|
|
340
352
|
VALIDATOR.section('slurm', info='Configuration section for Slurm.',
|
|
341
353
|
depends_on=('DEFAULT', 'workload_scheduler', 'Slurm'))
|
|
342
354
|
VALIDATOR.option('slurm', 'use_commands', validator=validation.bool_,
|
|
343
|
-
default=(shutil.which('slurmrestd') is None),
|
|
355
|
+
default=(shutil.which('slurmrestd') is None), prompt=False,
|
|
344
356
|
info='if set, use slurm cli commands instead of slurmrestd')
|
|
345
357
|
DEFAULT_SLURMRESTD_SOCK = join_path('/tmp', f'slurm_{USER}_{random.randint(1, 10000)}.sock')
|
|
346
|
-
|
|
347
|
-
info='openapi version to use for slurmrestd')
|
|
358
|
+
|
|
348
359
|
# Scheduler
|
|
349
360
|
VALIDATOR.section('scheduler', info='Scheduler configuration section.')
|
|
350
361
|
SCHEDULER_ALGORITHMS = ('fcfs', 'backfill', 'sjf')
|
|
351
362
|
VALIDATOR.option('scheduler', 'algorithm', default='fcfs', choices=SCHEDULER_ALGORITHMS,
|
|
352
|
-
info='scheduling algorithm to use')
|
|
363
|
+
info='scheduling algorithm to use', prompt=False)
|
|
353
364
|
VALIDATOR.option('scheduler', 'default_algorithm', default='fcfs',
|
|
354
|
-
choices=SCHEDULER_ALGORITHMS,
|
|
365
|
+
choices=SCHEDULER_ALGORITHMS, prompt=False,
|
|
355
366
|
info=('default algorithm to use'))
|
|
356
367
|
|
|
357
368
|
|
|
@@ -370,19 +381,20 @@ class ConfigGenerator:
|
|
|
370
381
|
self.validator = validator
|
|
371
382
|
self.sections = {}
|
|
372
383
|
|
|
373
|
-
def choose_values(self):
|
|
384
|
+
def choose_values(self, interactive=False, flux=False):
|
|
374
385
|
"""Choose configuration values based on user input."""
|
|
375
386
|
dirname = os.path.dirname(self.fname)
|
|
376
387
|
if dirname:
|
|
377
388
|
os.makedirs(dirname, exist_ok=True)
|
|
378
389
|
print(f'Creating a new config: "{self.fname}".')
|
|
379
390
|
print()
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
391
|
+
if interactive:
|
|
392
|
+
print_wrap('This will walk you through creating a new configuration for BEE. '
|
|
393
|
+
'Note that you will only be required to enter values for some '
|
|
394
|
+
'options. Please take a look at the other options and their '
|
|
395
|
+
'values before running BEE.')
|
|
396
|
+
print()
|
|
397
|
+
print('Please enter values for the following sections and options:')
|
|
386
398
|
# Let the user choose values for each required attribute
|
|
387
399
|
for sec_name, section in self.validator.sections:
|
|
388
400
|
# Determine if this section is valid under the current configuration
|
|
@@ -398,10 +410,13 @@ class ConfigGenerator:
|
|
|
398
410
|
print()
|
|
399
411
|
printed = True
|
|
400
412
|
|
|
413
|
+
this_default = option.default
|
|
414
|
+
if flux is True and opt_name == 'workload_scheduler':
|
|
415
|
+
this_default = "Flux"
|
|
416
|
+
option.prompt = False
|
|
401
417
|
# Check for a default value
|
|
402
|
-
if option.
|
|
403
|
-
|
|
404
|
-
value = option.validate(default)
|
|
418
|
+
if (not interactive or option.prompt is False) and this_default is not None:
|
|
419
|
+
value = option.validate(this_default)
|
|
405
420
|
print(f'Setting option "{opt_name}" to default value "{value}".')
|
|
406
421
|
print()
|
|
407
422
|
self.sections[sec_name][opt_name] = value
|
|
@@ -424,7 +439,8 @@ class ConfigGenerator:
|
|
|
424
439
|
print_wrap(f'{opt_name} - {option.info}')
|
|
425
440
|
if option.choices is not None:
|
|
426
441
|
print(f'(allowed values: {",".join(option.choices)})')
|
|
427
|
-
value = input_fn(f'{opt_name}
|
|
442
|
+
value = input_fn(f'Enter selection for {opt_name} or\n'
|
|
443
|
+
+ f'leave blank for default ({option.default}): ') or option.default
|
|
428
444
|
# Validate the input
|
|
429
445
|
try:
|
|
430
446
|
option.validate(value)
|
|
@@ -433,7 +449,7 @@ class ConfigGenerator:
|
|
|
433
449
|
value = None
|
|
434
450
|
return value
|
|
435
451
|
|
|
436
|
-
def save(self):
|
|
452
|
+
def save(self, interactive=False):
|
|
437
453
|
"""Save the config to a file."""
|
|
438
454
|
print()
|
|
439
455
|
print('The following configuration options were chosen:')
|
|
@@ -443,10 +459,11 @@ class ConfigGenerator:
|
|
|
443
459
|
for opt_name in section:
|
|
444
460
|
print(f'{opt_name} = {section[opt_name]}')
|
|
445
461
|
print()
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
462
|
+
if interactive:
|
|
463
|
+
ans = input('Would you like to save this config? [y/n] ')
|
|
464
|
+
if ans.lower() != 'y':
|
|
465
|
+
print('Quitting without saving')
|
|
466
|
+
return
|
|
450
467
|
config_utils.write_config(self.fname, self.sections)
|
|
451
468
|
print(70 * '#')
|
|
452
469
|
print('Before running BEE, check defaults in the configuration file:',
|
|
@@ -565,12 +582,21 @@ def info():
|
|
|
565
582
|
|
|
566
583
|
@app.command()
|
|
567
584
|
def new(path: str = typer.Argument(default=USERCONFIG_FILE,
|
|
568
|
-
help='Path to new config file')
|
|
585
|
+
help='Path to new config file'),
|
|
586
|
+
interactive: bool = typer.Option(False, '--interactive', '-i',
|
|
587
|
+
help='Whether or not to be prompted'
|
|
588
|
+
+ ' during config generation'),
|
|
589
|
+
flux: bool = typer.Option(False, '--flux', '-f',
|
|
590
|
+
help='Changes default scheduler to Flux')):
|
|
569
591
|
"""Create a new config file."""
|
|
570
592
|
if os.path.exists(path):
|
|
571
|
-
if check_yes(f'Path "{path}" already exists.\
|
|
593
|
+
if not interactive or check_yes(f'Path "{path}" already exists.\n'
|
|
594
|
+
+ 'Would you like to save a copy of it?'):
|
|
572
595
|
config_utils.backup(path)
|
|
573
|
-
ConfigGenerator(path, VALIDATOR).choose_values(
|
|
596
|
+
ConfigGenerator(path, VALIDATOR).choose_values(
|
|
597
|
+
flux=flux,
|
|
598
|
+
interactive=interactive
|
|
599
|
+
).save(interactive=interactive)
|
|
574
600
|
|
|
575
601
|
|
|
576
602
|
@app.command()
|
|
@@ -160,7 +160,8 @@ class ConfigSection:
|
|
|
160
160
|
class ConfigOption:
|
|
161
161
|
"""Config option/validation class."""
|
|
162
162
|
|
|
163
|
-
def __init__(self, info, validator=str, choices=None, default=None, input_fn=None
|
|
163
|
+
def __init__(self, info, validator=str, choices=None, default=None, input_fn=None,
|
|
164
|
+
prompt=False):
|
|
164
165
|
"""Construct the config option class."""
|
|
165
166
|
self.info = info
|
|
166
167
|
self.choices = choices
|
|
@@ -169,6 +170,7 @@ class ConfigOption:
|
|
|
169
170
|
# Function used to set the option from user input at config generation time
|
|
170
171
|
self.input_fn = input_fn
|
|
171
172
|
self._validator = validator
|
|
173
|
+
self.prompt = prompt
|
|
172
174
|
|
|
173
175
|
def validate(self, value):
|
|
174
176
|
"""Validate the value and return it."""
|