hpc-beeflow 0.1.11.dev5__tar.gz → 0.1.12.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.11.dev5 → hpc_beeflow-0.1.12.dev1}/PKG-INFO +6 -5
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/README.rst +3 -3
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/client/core.py +46 -26
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/config_driver.py +3 -3
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/config_utils.py +1 -1
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cwl/cwl.py +3 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cwl/workflow.py +1 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/log.py +1 -1
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/paths.py +0 -5
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/worker/slurm_worker.py +5 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/worker/utils.py +1 -1
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_remote.py +0 -2
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_remote_client.py +2 -2
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_wf_manager.py +4 -4
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/wf_manager/resources/wf_actions.py +1 -1
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/wf_manager/resources/wf_update.py +2 -2
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/wf_manager/resources/wf_utils.py +6 -74
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/pyproject.toml +5 -3
- hpc_beeflow-0.1.11.dev5/beeflow/common/db/sched_db.py +0 -58
- hpc_beeflow-0.1.11.dev5/beeflow/scheduler/README.md +0 -40
- hpc_beeflow-0.1.11.dev5/beeflow/scheduler/__init__.py +0 -1
- hpc_beeflow-0.1.11.dev5/beeflow/scheduler/algorithms.py +0 -267
- hpc_beeflow-0.1.11.dev5/beeflow/scheduler/models.py +0 -46
- hpc_beeflow-0.1.11.dev5/beeflow/scheduler/resource_allocation.py +0 -191
- hpc_beeflow-0.1.11.dev5/beeflow/scheduler/scheduler.py +0 -122
- hpc_beeflow-0.1.11.dev5/beeflow/scheduler/scheduler.yaml +0 -126
- hpc_beeflow-0.1.11.dev5/beeflow/scheduler/serializable.py +0 -29
- hpc_beeflow-0.1.11.dev5/beeflow/tests/test_db_sched.py +0 -45
- hpc_beeflow-0.1.11.dev5/beeflow/tests/test_scheduler.py +0 -363
- hpc_beeflow-0.1.11.dev5/beeflow/tests/test_scheduler_resource_allocation.py +0 -52
- hpc_beeflow-0.1.11.dev5/beeflow/tests/test_scheduler_rest.py +0 -226
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/LICENSE +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/client/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/client/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/client/bee_client.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/client/remote_client.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/cloud_launcher.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/api.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/build/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/build/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/build/build_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/build/container_drivers.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/build/utils.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/build_interfaces.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cli.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cli_connection.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cloud/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cloud/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cloud/chameleoncloud.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cloud/cloud.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cloud/constants.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cloud/google.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cloud/openstack.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cloud/provider.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/config_validator.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/connection.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/container_path.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/crt/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/crt/charliecloud_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/crt/crt_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/crt/singularity_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/crt_interface.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cwl/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cwl/examples/Dockerfile.comd-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cwl/examples/README.txt +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cwl/examples/cat_grep_tar.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cwl/examples/comd.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cwl/examples/comd_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cwl/examples/comd_pre.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/cwl/examples/lorem.txt +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/db/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/db/bdb.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/db/client_db.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/db/gdb_db.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/db/tm_db.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/db/wfm_db.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/deps/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/deps/celery_manager.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/deps/container_manager.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/deps/neo4j_manager.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/deps/redis_manager.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/expr.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/gdb/DESIGN.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/gdb/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/gdb/gdb_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/gdb/generate_graph.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/gdb/graphml_key_updater.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/gdb/neo4j_cypher.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/gdb/neo4j_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/gdb/sqlite3_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/integration/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/integration/generated_workflows.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/integration/utils.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/integration_test.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/object_models.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/parser/.gitignore +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/parser/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/parser/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/parser/parser.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/states.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/tab_completion.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/validation.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/wf_interface.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/wf_profiler.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/worker/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/worker/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/worker/flux_worker.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/worker/lsf_worker.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/worker/simple_worker.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/worker/worker.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/common/worker_interface.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cloud_templates/dora.jinja +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cloud_templates/dora.yaml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/blast/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/blast/blast.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_output.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_output_err.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_split.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_worker001.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_worker002.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/blast/input/small.fasta +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/cat.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep0.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep1.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/input.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/lorem.txt +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/tar.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/workflow.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cgt-2branches/README.txt +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cgt-2branches/cat.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cgt-2branches/cat2.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep0.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep1.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep2.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep3.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cgt-2branches/input.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cgt-2branches/lorem.txt +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cgt-2branches/tar.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cgt-2branches/tar2.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/cgt-2branches/workflow.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/Dockerfile.clamr-ffmpeg +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/post_run.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/pre_run.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/Dockerfile.clamr-ffmpeg +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/post_run.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/pre_run.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/lsf-charliecloud/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/lsf-charliecloud/cf-summit.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/Dockerfile.clamr-lanl-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf-darwin.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf-no-owrite.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/copyContainer_containerName.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/dockerFile_containerName.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/dockerPull.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-singularity/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-singularity/cf-singularity.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/TO-DO-Some-Suggestion.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/data/ucsd_fire_burned.csv +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/Dockerfile.fire_analysis +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/confusion_matrix_maker.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/confusion_matrix_maker.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/create_tables.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/create_tables.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/eval_models.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/eval_models.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/feature_perm.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/feature_perm.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/optimize_models.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/optimize_models.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/pred_display.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/pred_display.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/preprocess.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/preprocess.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/split_data.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire-workflow/split_data.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/fire_tasks.png +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/firebee.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/rf_fire_tasks.png +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/fire-ml/rf_only_firebee.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/nwchem-mpi/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem_bin.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant/graph.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant_1_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant_2_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant_4_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/Dockerfile.pennant-flux-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/Dockerfile.pennant-graph-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/graph.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_1_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_2_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_4_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_8_node.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/pytest.ini +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/sim_runner/README +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/sim_runner/generate_sim_runner_wf.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/sim_runner/input.txt +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/sim_runner/load_env.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/sim_runner/sim_runner +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/sim_runner/sim_runner_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/sim_runner/sim_runner_wf.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/cancel.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/gc-nc.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/gc.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/lorem.txt +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/builder/dockerFile.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/builder/dockerPull.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/grep-wordcount/gc.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/grep-wordcount/lorem.txt +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/helloworld.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/helloworld_input.yaml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/DAG_example-1.png +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add_multiply_example_workflow.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add_step1.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/isolated test.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/job.yaml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/multiply.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/multiply_step2.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/workflow_generater_python.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree_output.txt +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree_tool.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/expectedValue.txt +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/hiring1.txt +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/linear_regress_output.txt +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/linear_regression.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/machinelearning_pipeline.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/out.PNG +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/predict_code.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/predict_tool.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/read_dataset.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/read_dataset_tool.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/regress_tool.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/Dockerfile.builder_demo +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/Dockerfile.clamr-ffmpeg +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/Dockerfile.clamr-lanl-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/Dockerfile.clamr-ppc64le +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/Dockerfile.comd-flux-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/Dockerfile.deb9ompi-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/Dockerfile.lulesh-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/Dockerfile.neo4j +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/Dockerfile.nwchem-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/Dockerfile.pennant-flux-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/Dockerfile.vaspompi-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.comd-x86_64-wpmix +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.debian +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.openmpi-3.1.5 +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/comd-pmix-support/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/comd-pmix-support/dont-init-ucx-on-intel-cray.patch +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/pennant-graph/Dockerfile.pennant-graph-x86_64 +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/remote/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/remote/remote.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/task_manager/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/task_manager/background.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/task_manager/models.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/task_manager/task_actions.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/task_manager/task_manager.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/task_manager/utils.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/42.tgz +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/README.md +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/cf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/clamr-wf/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/clamr-wf/clamr_job.json +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/clamr-wf/clamr_job.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/clamr-wf/clamr_wf.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/clamr-wf/ffmpeg.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/clamr-wf/mv_script.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/clamr-wf/mv_script.sh +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/clamr-wf.tgz +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/cwl_files/cat-grep-tar.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/cwl_files/cat-grep-tar.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/cwl_files/clamr.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/cwl_files/clamr.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/cwl_files/comd.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/cwl_files/comd.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/cwl_files/task-req.cwl +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/cwl_files/task-req.yml +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/gdb.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/mocks.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_bee_client.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_charliecloud_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_cloud.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_config_driver.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_config_utils.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_config_validator.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_container_path.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_cwl.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_cwl_workflow.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_db_client.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_db_tm.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_neo4j_cypher.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_parser.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_slurm_worker.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_sqlite_gdb.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_tm.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_wf_interface.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_wf_update.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/tests/test_wf_utils.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/wf_manager/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/wf_manager/models.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/wf_manager/resources/__init__.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/wf_manager/resources/wf_list.py +0 -0
- {hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/wf_manager/wf_manager.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hpc-beeflow
|
|
3
|
-
Version: 0.1.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.1.12.dev1
|
|
4
|
+
Summary: Orchestrates complex simulation workflows through coordination, execution, and monitoring, with support for containerized applications.
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Keywords: bee,hpc,workflow,cluster,computing
|
|
7
7
|
Author: BEE-LANL Dev Team
|
|
@@ -32,6 +32,7 @@ Requires-Dist: Flask (>=2.0,<3.0)
|
|
|
32
32
|
Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
|
|
33
33
|
Requires-Dist: celery[redis,sqlalchemy] (>=5.3.4,<6.0.0)
|
|
34
34
|
Requires-Dist: cffi (>=1.15.1,<2.0.0)
|
|
35
|
+
Requires-Dist: click (==8.1.7)
|
|
35
36
|
Requires-Dist: cwl-utils (>=0.16,<0.17)
|
|
36
37
|
Requires-Dist: docutils (==0.18.1)
|
|
37
38
|
Requires-Dist: fastapi (==0.115.8)
|
|
@@ -106,11 +107,11 @@ BEE Sites
|
|
|
106
107
|
- Documentation
|
|
107
108
|
|
|
108
109
|
* - Stable release
|
|
109
|
-
- ``0.1.
|
|
110
|
+
- ``0.1.11``
|
|
110
111
|
- `https://lanl.github.io/BEE/ <https://lanl.github.io/BEE/>`__
|
|
111
112
|
* - Pre-release
|
|
112
|
-
- ``0.1.
|
|
113
|
-
- `https://lanl.github.io/BEE/0.1.
|
|
113
|
+
- ``0.1.12dev0``
|
|
114
|
+
- `https://lanl.github.io/BEE/0.1.12dev1/ <https://lanl.github.io/BEE/0.1.12dev1/>`__
|
|
114
115
|
|
|
115
116
|
|
|
116
117
|
Contact
|
|
@@ -47,11 +47,11 @@ BEE Sites
|
|
|
47
47
|
- Documentation
|
|
48
48
|
|
|
49
49
|
* - Stable release
|
|
50
|
-
- ``0.1.
|
|
50
|
+
- ``0.1.11``
|
|
51
51
|
- `https://lanl.github.io/BEE/ <https://lanl.github.io/BEE/>`__
|
|
52
52
|
* - Pre-release
|
|
53
|
-
- ``0.1.
|
|
54
|
-
- `https://lanl.github.io/BEE/0.1.
|
|
53
|
+
- ``0.1.12dev0``
|
|
54
|
+
- `https://lanl.github.io/BEE/0.1.12dev1/ <https://lanl.github.io/BEE/0.1.12dev1/>`__
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
Contact
|
|
@@ -49,15 +49,15 @@ def patch_attribute_section():
|
|
|
49
49
|
sched = config.get('DEFAULT', 'workload_scheduler', fallback='Slurm')
|
|
50
50
|
if sched == 'Flux':
|
|
51
51
|
section = 'flux attributes'
|
|
52
|
-
default_attrs = 'queue,runtime,nodelist'
|
|
52
|
+
default_attrs = 'id,queue,runtime,nodelist'
|
|
53
53
|
elif sched == 'Slurm':
|
|
54
54
|
use_cmds = config.get('slurm', 'use_commands', fallback='True').strip().lower() == 'true'
|
|
55
55
|
if use_cmds:
|
|
56
56
|
section = 'slurm command attributes'
|
|
57
|
-
default_attrs = 'Partition,RunTime,NodeList'
|
|
57
|
+
default_attrs = 'JobId,Partition,RunTime,NodeList,Command'
|
|
58
58
|
else:
|
|
59
59
|
section = 'slurm attributes'
|
|
60
|
-
default_attrs = 'partition,nodes'
|
|
60
|
+
default_attrs = 'job_id,partition,nodes,command'
|
|
61
61
|
else:
|
|
62
62
|
return
|
|
63
63
|
|
|
@@ -197,9 +197,10 @@ def open_log(component):
|
|
|
197
197
|
|
|
198
198
|
|
|
199
199
|
def need_slurmrestd():
|
|
200
|
-
"""Check if slurmrestd is needed."""
|
|
200
|
+
"""Check if slurmrestd is needed and that it exists in the current environment."""
|
|
201
|
+
have_slurmrestd = shutil.which('slurmrestd')
|
|
201
202
|
return (bc.get('DEFAULT', 'workload_scheduler') == 'Slurm'
|
|
202
|
-
and not bc.get('slurm', 'use_commands'))
|
|
203
|
+
and not bc.get('slurm', 'use_commands') and have_slurmrestd)
|
|
203
204
|
|
|
204
205
|
|
|
205
206
|
def need_neo4j():
|
|
@@ -214,7 +215,7 @@ def init_components(remote=False):
|
|
|
214
215
|
# Slurmrestd will be started only if we're running with Slurm and
|
|
215
216
|
# slurm::use_commands is not True
|
|
216
217
|
|
|
217
|
-
@mgr.component('wf_manager', ('
|
|
218
|
+
@mgr.component('wf_manager', ('celery',))
|
|
218
219
|
def start_wfm():
|
|
219
220
|
"""Start the WFM."""
|
|
220
221
|
fp = open_log('wf_manager')
|
|
@@ -232,14 +233,6 @@ def init_components(remote=False):
|
|
|
232
233
|
return launch_with_gunicorn('beeflow.task_manager.task_manager:create_app()',
|
|
233
234
|
paths.tm_socket(), stdout=fp, stderr=fp)
|
|
234
235
|
|
|
235
|
-
@mgr.component('scheduler', ())
|
|
236
|
-
def start_scheduler():
|
|
237
|
-
"""Start the scheduler."""
|
|
238
|
-
fp = open_log('scheduler')
|
|
239
|
-
# Using a function here because of the funny way that the scheduler's written
|
|
240
|
-
return launch_with_gunicorn('beeflow.scheduler.scheduler:create_app()',
|
|
241
|
-
paths.sched_socket(), stdout=fp, stderr=fp)
|
|
242
|
-
|
|
243
236
|
if remote:
|
|
244
237
|
@mgr.component('remote_api', ('wf_manager', 'task_manager'))
|
|
245
238
|
def start_remote_api():
|
|
@@ -495,7 +488,7 @@ def start(foreground: bool = typer.Option(False, '--foreground', '-F',
|
|
|
495
488
|
# Create the log path if it doesn't exist yet
|
|
496
489
|
path = paths.log_path()
|
|
497
490
|
os.makedirs(path, exist_ok=True)
|
|
498
|
-
base_components = ['wf_manager', 'task_manager'
|
|
491
|
+
base_components = ['wf_manager', 'task_manager']
|
|
499
492
|
if foreground:
|
|
500
493
|
try:
|
|
501
494
|
Beeflow(mgr, base_components).loop()
|
|
@@ -597,14 +590,31 @@ def handle_rm_error(err, dir_to_check, wf_list):
|
|
|
597
590
|
def reset(archive: bool = typer.Option(False, '--archive', '-a',
|
|
598
591
|
help='Archive bee_workdir before removal')):
|
|
599
592
|
"""Stop all components and delete the bee_workdir directory."""
|
|
600
|
-
# Check workflow states; warn if there are active states.
|
|
601
593
|
reset_hn = socket.gethostname()
|
|
602
|
-
|
|
603
|
-
|
|
594
|
+
|
|
595
|
+
# Check if beeflow is running
|
|
596
|
+
sock_path = paths.beeflow_socket()
|
|
597
|
+
beeflow_running = False
|
|
598
|
+
workflow_list = []
|
|
599
|
+
|
|
600
|
+
if os.path.exists(sock_path):
|
|
601
|
+
try:
|
|
602
|
+
resp = cli_connection.send(sock_path, {'type': 'status'})
|
|
603
|
+
if resp is not None:
|
|
604
|
+
beeflow_running = True
|
|
605
|
+
bee_client.check_hostname(reset_hn)
|
|
606
|
+
workflow_list = bee_client.get_wf_list()
|
|
607
|
+
except (ConnectionResetError, ConnectionRefusedError,
|
|
608
|
+
cli_connection.BeeflowConnectionError, OSError):
|
|
609
|
+
# Beeflow socket exists but is not responsive
|
|
610
|
+
pass
|
|
611
|
+
|
|
612
|
+
# Check workflow states; warn if there are active states.
|
|
604
613
|
active_states = {'Running', 'Paused', 'Initializing', 'Waiting'}
|
|
605
614
|
caution = ""
|
|
606
|
-
if
|
|
607
|
-
|
|
615
|
+
if beeflow_running and workflow_list:
|
|
616
|
+
if {item for row in workflow_list for item in row}.intersection(active_states):
|
|
617
|
+
caution = """
|
|
608
618
|
**************************************************************
|
|
609
619
|
Caution: There are active workflows! They will be removed!
|
|
610
620
|
Try 'beeflow list' to view them.
|
|
@@ -615,9 +625,16 @@ def reset(archive: bool = typer.Option(False, '--archive', '-a',
|
|
|
615
625
|
warn(f"\n A reset will remove this directory: {dir_to_delete}\n")
|
|
616
626
|
if archive:
|
|
617
627
|
print(" Archive flag is set: logs, workflows and containers will be backed up.")
|
|
628
|
+
else:
|
|
629
|
+
warn(" If you want to save logs, workflows and containers:")
|
|
630
|
+
warn(" answer no and rerun with --archive flag.")
|
|
631
|
+
|
|
632
|
+
status_msg = "running" if beeflow_running else "not running"
|
|
633
|
+
print(f"\n Beeflow is currently {status_msg}.")
|
|
634
|
+
|
|
618
635
|
print("""
|
|
619
636
|
A reset will:
|
|
620
|
-
Shutdown beeflow and all BEE components.
|
|
637
|
+
Shutdown beeflow and all BEE components (if running).
|
|
621
638
|
Delete the bee_workdir directory which results in:
|
|
622
639
|
Removing the archive of all workflows.
|
|
623
640
|
(unless archives is configured elsewhere).
|
|
@@ -635,11 +652,14 @@ def reset(archive: bool = typer.Option(False, '--archive', '-a',
|
|
|
635
652
|
sys.exit()
|
|
636
653
|
elif absolutely_sure in ("y", "yes"):
|
|
637
654
|
# Stop all of the beeflow processes
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
655
|
+
if beeflow_running:
|
|
656
|
+
stop("quiet")
|
|
657
|
+
print("Beeflow is shutting down.")
|
|
658
|
+
print("Waiting for components to cleanly stop.")
|
|
659
|
+
# This wait is essential. It takes a minute to shut down.
|
|
660
|
+
time.sleep(5)
|
|
661
|
+
else:
|
|
662
|
+
print("Beeflow is not running, proceeding to remove bee_workdir.")
|
|
643
663
|
|
|
644
664
|
# Save the bee_workdir directory if the archive option was set
|
|
645
665
|
if archive:
|
|
@@ -367,18 +367,18 @@ flux_attr = [
|
|
|
367
367
|
VALIDATOR.section('slurm attributes',info='Available task information for the slurm scheduler\n',
|
|
368
368
|
depends_on=('slurm', 'use_commands', 'False'))
|
|
369
369
|
VALIDATOR.option('slurm attributes','attributes',validator=validate_attributes,prompt=False,
|
|
370
|
-
default='partition,nodes',info='Enter task attributes (comma-separated)')
|
|
370
|
+
default='job_id,partition,nodes,command',info='Enter task attributes (comma-separated)')
|
|
371
371
|
|
|
372
372
|
VALIDATOR.section('slurm command attributes',info='Available task information for sacct\n',
|
|
373
373
|
depends_on=('slurm', 'use_commands', 'True'))
|
|
374
374
|
VALIDATOR.option('slurm command attributes','attributes',validator=validate_attributes,
|
|
375
|
-
prompt=False,default='Partition,RunTime,NodeList',
|
|
375
|
+
prompt=False,default='JobId,Partition,RunTime,NodeList,Command',
|
|
376
376
|
info='Enter task attributes (comma-separated)')
|
|
377
377
|
|
|
378
378
|
VALIDATOR.section('flux attributes', info = 'Available task information for the flux scheduler\n',
|
|
379
379
|
depends_on=('DEFAULT', 'workload_scheduler', 'Flux'))
|
|
380
380
|
VALIDATOR.option('flux attributes','attributes',validator=validate_attributes,prompt=False,
|
|
381
|
-
default='queue,runtime,nodelist',info='Enter task attributes (comma-separated).')
|
|
381
|
+
default='id,queue,runtime,nodelist',info='Enter task attributes (comma-separated).')
|
|
382
382
|
|
|
383
383
|
def validate_chrun_opts(opts):
|
|
384
384
|
"""Ensure that chrun_opts don't contain options that'll conflict with BEE."""
|
|
@@ -25,7 +25,7 @@ def filter_and_validate(config, validator,config_path):
|
|
|
25
25
|
if not config.has_section('flux attributes'):
|
|
26
26
|
config.add_section('flux attributes')
|
|
27
27
|
if not config.get('flux attributes','attributes',fallback='').strip():
|
|
28
|
-
config.set('flux attributes','attributes','queue,runtime,nodelist')
|
|
28
|
+
config.set('flux attributes','attributes','id,queue,runtime,nodelist')
|
|
29
29
|
elif scheduler == 'Slurm':
|
|
30
30
|
if use_commands:
|
|
31
31
|
sections_to_remove = ['flux attributes','slurm attributes']
|
|
@@ -377,6 +377,7 @@ class SlurmRequirement:
|
|
|
377
377
|
|
|
378
378
|
account: str = None
|
|
379
379
|
time_limit: str = None
|
|
380
|
+
signal: str = None
|
|
380
381
|
partition: str = None
|
|
381
382
|
qos: str = None
|
|
382
383
|
reservation: str = None
|
|
@@ -395,6 +396,8 @@ class SlurmRequirement:
|
|
|
395
396
|
sched_dump['beeflow:SlurmRequirement']['qos'] = self.qos
|
|
396
397
|
if self.reservation:
|
|
397
398
|
sched_dump['beeflow:SlurmRequirement']['reservation'] = self.reservation
|
|
399
|
+
if self.signal:
|
|
400
|
+
sched_dump['beeflow:SlurmRequirement']['signal'] = self.signal
|
|
398
401
|
if self.load_from_file:
|
|
399
402
|
sched_dump['beeflow:SlurmRequirement']['load_from_file'] = self.load_from_file
|
|
400
403
|
return sched_dump
|
|
@@ -90,6 +90,7 @@ class Slurm(SlurmRequirement):
|
|
|
90
90
|
"""Return a scheduler requirement object."""
|
|
91
91
|
return SlurmRequirement(time_limit=self.time_limit, account=self.account,
|
|
92
92
|
partition=self.partition, qos=self.qos, reservation=self.reservation,
|
|
93
|
+
signal=self.signal,
|
|
93
94
|
load_from_file=self.load_from_file)
|
|
94
95
|
|
|
95
96
|
|
|
@@ -18,6 +18,6 @@ def setup(name):
|
|
|
18
18
|
log.setLevel(LEVEL)
|
|
19
19
|
handler = logging.StreamHandler()
|
|
20
20
|
handler.setLevel(logging.DEBUG)
|
|
21
|
-
handler.setFormatter(logging.Formatter('[%(asctime)s] %(name)s:%(funcName)s(): %(
|
|
21
|
+
handler.setFormatter(logging.Formatter('[%(asctime)s] %(name)s:%(funcName)s(): %(message)s'))
|
|
22
22
|
log.addHandler(handler)
|
|
23
23
|
return log
|
|
@@ -35,11 +35,6 @@ def remote_socket():
|
|
|
35
35
|
return os.path.join(_sockdir(), 'remote.sock')
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
def sched_socket():
|
|
39
|
-
"""Get the scheduler socket."""
|
|
40
|
-
return os.path.join(_sockdir(), 'scheduler.sock')
|
|
41
|
-
|
|
42
|
-
|
|
43
38
|
def slurm_socket():
|
|
44
39
|
"""Get the slurm socket (for slurmrestd)."""
|
|
45
40
|
return os.path.join(_sockdir(), 'slurmrestd.sock')
|
|
@@ -81,6 +81,8 @@ class BaseSlurmWorker(Worker):
|
|
|
81
81
|
reservation = self.get_req(task, 'beeflow:SlurmRequirement', 'reservation', config,
|
|
82
82
|
default=self.default_reservation)
|
|
83
83
|
|
|
84
|
+
signal = self.get_req(task, 'beeflow:SlurmRequirement', 'signal', config,
|
|
85
|
+
default=None)
|
|
84
86
|
shell = self.get_req(task, 'beeflow:ScriptRequirement', 'shell', config,
|
|
85
87
|
default="/bin/bash")
|
|
86
88
|
scripts_enabled = self.get_req(task, 'beeflow:ScriptRequirement', 'enabled', config,
|
|
@@ -96,6 +98,7 @@ class BaseSlurmWorker(Worker):
|
|
|
96
98
|
'qos': qos,
|
|
97
99
|
'reservation': reservation,
|
|
98
100
|
'shell': shell,
|
|
101
|
+
'signal': signal,
|
|
99
102
|
'scripts_enabled': scripts_enabled
|
|
100
103
|
}
|
|
101
104
|
return requirements
|
|
@@ -122,6 +125,8 @@ class BaseSlurmWorker(Worker):
|
|
|
122
125
|
header.append(f'#SBATCH --qos {requirements["qos"]}')
|
|
123
126
|
if requirements['reservation']:
|
|
124
127
|
header.append(f'#SBATCH --reservation {requirements["reservation"]}')
|
|
128
|
+
if requirements['signal']:
|
|
129
|
+
header.append(f'#SBATCH --signal={requirements["signal"]}')
|
|
125
130
|
# Return immediately on error
|
|
126
131
|
if requirements["shell"] == "/bin/bash":
|
|
127
132
|
header.append('set -e')
|
|
@@ -22,7 +22,7 @@ def get_state_sacct(job_id):
|
|
|
22
22
|
data = resp.stdout.splitlines()
|
|
23
23
|
header = data[0]
|
|
24
24
|
header = header.split('|')
|
|
25
|
-
job_id_idx = header.index('
|
|
25
|
+
job_id_idx = header.index('JobId')
|
|
26
26
|
rows = [row.split('|') for row in data[1:]]
|
|
27
27
|
job_ids = [row[job_id_idx] for row in rows]
|
|
28
28
|
info = rows[job_ids.index(job_id)]
|
|
@@ -76,7 +76,6 @@ def test_get_core_status(mocker):
|
|
|
76
76
|
# Mocked response from the daemon
|
|
77
77
|
mock_response = {
|
|
78
78
|
"components": {
|
|
79
|
-
"scheduler": "running",
|
|
80
79
|
"wf_manager": "running",
|
|
81
80
|
"task_manager": "running"
|
|
82
81
|
}
|
|
@@ -89,7 +88,6 @@ def test_get_core_status(mocker):
|
|
|
89
88
|
|
|
90
89
|
assert response.status_code == 200
|
|
91
90
|
assert response.json() == {
|
|
92
|
-
"scheduler": "running",
|
|
93
91
|
"wf_manager": "running",
|
|
94
92
|
"task_manager": "running"
|
|
95
93
|
}
|
|
@@ -243,7 +243,7 @@ def test_core_status_success(mocker):
|
|
|
243
243
|
mock_run = mocker.patch("subprocess.run")
|
|
244
244
|
mock_run.return_value = subprocess.CompletedProcess(
|
|
245
245
|
["curl", "ssh_target:1234/core/status/"], returncode=0,
|
|
246
|
-
stdout='{"redis":"RUNNING","
|
|
246
|
+
stdout='{"redis":"RUNNING","celery":"RUNNING",'
|
|
247
247
|
'"slurmrestd":"RUNNING","wf_manager":"RUNNING","task_manager":"RUNNING",'
|
|
248
248
|
'"remote_api":"RUNNING","neo4j-database":"RUNNING"}',
|
|
249
249
|
stderr=""
|
|
@@ -252,7 +252,7 @@ def test_core_status_success(mocker):
|
|
|
252
252
|
result = runner.invoke(app, ["core-status", "ssh_target"])
|
|
253
253
|
|
|
254
254
|
assert result.exit_code == 0
|
|
255
|
-
expected_output = '{"redis":"RUNNING","
|
|
255
|
+
expected_output = '{"redis":"RUNNING","celery":"RUNNING",' \
|
|
256
256
|
'"slurmrestd":"RUNNING","wf_manager":"RUNNING","task_manager":"RUNNING",' \
|
|
257
257
|
'"remote_api":"RUNNING","neo4j-database":"RUNNING"}'
|
|
258
258
|
assert expected_output in result.output
|
|
@@ -140,13 +140,13 @@ def test_start_workflow(client, mocker):
|
|
|
140
140
|
"""Test starting a workflow."""
|
|
141
141
|
mocker.patch('beeflow.wf_manager.resources.wf_utils.get_workflow_interface',
|
|
142
142
|
return_value=MockWFI())
|
|
143
|
-
mocker.patch('beeflow.wf_manager.resources.wf_utils.submit_tasks_tm', return_value=None)
|
|
144
|
-
mocker.patch('beeflow.wf_manager.resources.wf_utils.submit_tasks_scheduler', return_value=None)
|
|
143
|
+
submit_tasks_tm = mocker.patch('beeflow.wf_manager.resources.wf_utils.submit_tasks_tm', return_value=None)
|
|
145
144
|
mocker.patch('beeflow.wf_manager.resources.wf_utils.update_wf_status', return_value=None)
|
|
146
145
|
mocker.patch('beeflow.tests.mocks.MockWFI.get_workflow_state', return_value='No Start')
|
|
147
146
|
resp = client().post(f'/bee_wfm/v1/jobs/{WF_ID}')
|
|
148
147
|
assert resp.status_code == 200
|
|
149
148
|
assert resp.json['msg'] == 'Workflow started successfully'
|
|
149
|
+
submit_tasks_tm.assert_called()
|
|
150
150
|
|
|
151
151
|
|
|
152
152
|
def test_workflow_status(client, mocker, setup_teardown_workflow):
|
|
@@ -266,8 +266,7 @@ def test_resume_workflow(client, mocker, setup_teardown_workflow, temp_db):
|
|
|
266
266
|
return_value=MockWFI())
|
|
267
267
|
mocker.patch('beeflow.tests.mocks.MockWFI.get_workflow_state',
|
|
268
268
|
return_value='Paused')
|
|
269
|
-
mocker.patch('beeflow.wf_manager.resources.wf_utils.submit_tasks_tm', return_value=None)
|
|
270
|
-
mocker.patch('beeflow.wf_manager.resources.wf_utils.submit_tasks_scheduler', return_value=None)
|
|
269
|
+
submit_tasks_tm = mocker.patch('beeflow.wf_manager.resources.wf_utils.submit_tasks_tm', return_value=None)
|
|
271
270
|
mocker.patch('beeflow.wf_manager.resources.wf_utils.update_wf_status', return_value=None)
|
|
272
271
|
|
|
273
272
|
wf_utils.update_wf_status(WF_ID, 'Paused')
|
|
@@ -275,3 +274,4 @@ def test_resume_workflow(client, mocker, setup_teardown_workflow, temp_db):
|
|
|
275
274
|
resp = client().patch(f'/bee_wfm/v1/jobs/{WF_ID}', json=request)
|
|
276
275
|
assert resp.json['msg'] == 'Workflow Resumed'
|
|
277
276
|
assert resp.status_code == 200
|
|
277
|
+
submit_tasks_tm.assert_called()
|
{hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/wf_manager/resources/wf_actions.py
RENAMED
|
@@ -134,7 +134,7 @@ class WFActions(Resource):
|
|
|
134
134
|
wf_utils.update_wf_status(wf_id, "Running")
|
|
135
135
|
wfi = wf_utils.get_workflow_interface(wf_id)
|
|
136
136
|
tasks = wfi.get_ready_tasks()
|
|
137
|
-
wf_utils.
|
|
137
|
+
wf_utils.submit_tasks_tm(wf_id, tasks)
|
|
138
138
|
|
|
139
139
|
log.info(f"Workflow {wf_id} Resumed")
|
|
140
140
|
resp = WorkflowActionResponse(msg="Workflow Resumed").model_dump(), 200
|
{hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/wf_manager/resources/wf_update.py
RENAMED
|
@@ -135,7 +135,7 @@ class WFUpdate(Resource):
|
|
|
135
135
|
return True
|
|
136
136
|
# Submit the restart task
|
|
137
137
|
tasks = [new_task]
|
|
138
|
-
wf_utils.
|
|
138
|
+
wf_utils.submit_tasks_tm(state_update.wf_id, tasks)
|
|
139
139
|
log.info(f'Task {state_update.task_id} restarted')
|
|
140
140
|
return True
|
|
141
141
|
return False
|
|
@@ -153,7 +153,7 @@ class WFUpdate(Resource):
|
|
|
153
153
|
wf_utils.copy_task_output(task)
|
|
154
154
|
tasks = wfi.finalize_task(task)
|
|
155
155
|
if tasks and wf_state not in ('Paused', 'Cancelled'):
|
|
156
|
-
wf_utils.
|
|
156
|
+
wf_utils.submit_tasks_tm(state_update.wf_id, tasks)
|
|
157
157
|
|
|
158
158
|
# If the job failed, fail the dependent tasks
|
|
159
159
|
# TIMEOUT states should only be seen here if they can't restart
|
{hpc_beeflow-0.1.11.dev5 → hpc_beeflow-0.1.12.dev1}/beeflow/wf_manager/resources/wf_utils.py
RENAMED
|
@@ -17,12 +17,6 @@ from beeflow.common.connection import Connection
|
|
|
17
17
|
from beeflow.common import paths
|
|
18
18
|
from beeflow.common.db import wfm_db
|
|
19
19
|
from beeflow.common.db.bdb import connect_db
|
|
20
|
-
from beeflow.scheduler.models import (
|
|
21
|
-
ScheduleTasksRequest,
|
|
22
|
-
ScheduleTasksResponse,
|
|
23
|
-
SchedulerTask,
|
|
24
|
-
)
|
|
25
|
-
|
|
26
20
|
from beeflow.task_manager.models import SubmitTasksRequest
|
|
27
21
|
from beeflow.common.deps.neo4j_manager import connect_neo4j_driver
|
|
28
22
|
|
|
@@ -170,7 +164,6 @@ def tm_url():
|
|
|
170
164
|
|
|
171
165
|
# Base URLs for the TM and the Scheduler
|
|
172
166
|
TM_URL = "bee_tm/v1/task/"
|
|
173
|
-
SCHED_URL = "bee_sched/v1/"
|
|
174
167
|
|
|
175
168
|
|
|
176
169
|
def _connect_tm():
|
|
@@ -178,32 +171,13 @@ def _connect_tm():
|
|
|
178
171
|
return Connection(paths.tm_socket())
|
|
179
172
|
|
|
180
173
|
|
|
181
|
-
def
|
|
182
|
-
"""
|
|
183
|
-
|
|
184
|
-
scheduler = "bee_sched/v1/"
|
|
185
|
-
# sched_listen_port = bc.get('scheduler', 'listen_port')
|
|
186
|
-
sched_listen_port = db.info.get_port("sched")
|
|
187
|
-
return f"http://127.0.0.1:{sched_listen_port}/{scheduler}"
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
def _connect_scheduler():
|
|
191
|
-
"""Return a connection to the Scheduler."""
|
|
192
|
-
return Connection(paths.sched_socket())
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
def _resource(component, tag=""):
|
|
196
|
-
"""Access Task Manager or Scheduler."""
|
|
197
|
-
if component == "tm":
|
|
198
|
-
return TM_URL + str(tag)
|
|
199
|
-
if component == "sched":
|
|
200
|
-
return SCHED_URL + str(tag)
|
|
201
|
-
|
|
202
|
-
raise ValueError(f"Invalid component: {component}")
|
|
174
|
+
def _taskmanager(tag=""):
|
|
175
|
+
"""Access Task Manager resources."""
|
|
176
|
+
return TM_URL + str(tag)
|
|
203
177
|
|
|
204
178
|
|
|
205
179
|
# Submit tasks to the TM
|
|
206
|
-
def submit_tasks_tm(wf_id, tasks
|
|
180
|
+
def submit_tasks_tm(wf_id, tasks):
|
|
207
181
|
"""Submit a task to the task manager."""
|
|
208
182
|
wfi = get_workflow_interface(wf_id)
|
|
209
183
|
# Serialize task with json
|
|
@@ -212,7 +186,7 @@ def submit_tasks_tm(wf_id, tasks, allocation): # pylint: disable=W0613
|
|
|
212
186
|
try:
|
|
213
187
|
conn = _connect_tm()
|
|
214
188
|
resp = conn.post(
|
|
215
|
-
|
|
189
|
+
_taskmanager(),
|
|
216
190
|
json=SubmitTasksRequest(tasks=tasks).model_dump(),
|
|
217
191
|
timeout=5,
|
|
218
192
|
)
|
|
@@ -228,48 +202,6 @@ def submit_tasks_tm(wf_id, tasks, allocation): # pylint: disable=W0613
|
|
|
228
202
|
log.info("Submit task to TM returned bad status: %s", resp.status_code)
|
|
229
203
|
|
|
230
204
|
|
|
231
|
-
def tasks_to_sched(tasks):
|
|
232
|
-
"""Convert gdb tasks to sched tasks."""
|
|
233
|
-
sched_tasks = []
|
|
234
|
-
for task in tasks:
|
|
235
|
-
sched_task = SchedulerTask(
|
|
236
|
-
workflow_name="workflow",
|
|
237
|
-
task_name=task.name,
|
|
238
|
-
requirements={"max_runtime": 1, "nodes": 1},
|
|
239
|
-
)
|
|
240
|
-
sched_tasks.append(sched_task)
|
|
241
|
-
return sched_tasks
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
def submit_tasks_scheduler(tasks):
|
|
245
|
-
"""Submit a list of tasks to the scheduler."""
|
|
246
|
-
sched_tasks = tasks_to_sched(tasks)
|
|
247
|
-
# The workflow name will eventually be added to the wfi workflow object
|
|
248
|
-
try:
|
|
249
|
-
conn = _connect_scheduler()
|
|
250
|
-
resp = conn.put(
|
|
251
|
-
_resource("sched", "workflows/workflow/jobs"),
|
|
252
|
-
json=ScheduleTasksRequest(tasks=sched_tasks).model_dump(),
|
|
253
|
-
timeout=5,
|
|
254
|
-
)
|
|
255
|
-
except requests.exceptions.ConnectionError:
|
|
256
|
-
log.error("Unable to connect to scheduler to submit tasks.")
|
|
257
|
-
return "Did not work"
|
|
258
|
-
|
|
259
|
-
if resp.status_code != 200:
|
|
260
|
-
log.info("Something bad happened %s", resp.status_code)
|
|
261
|
-
return "Did not work"
|
|
262
|
-
return ScheduleTasksResponse.model_validate(resp.json()).tasks
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
def schedule_submit_tasks(wf_id, tasks):
|
|
266
|
-
"""Schedule and then submit tasks to the TM."""
|
|
267
|
-
# Submit ready tasks to the scheduler
|
|
268
|
-
allocation = submit_tasks_scheduler(tasks)
|
|
269
|
-
# Submit tasks to TM
|
|
270
|
-
submit_tasks_tm(wf_id, tasks, allocation)
|
|
271
|
-
|
|
272
|
-
|
|
273
205
|
def setup_workflow(wf_id, wf_name, wf_dir, wf_workdir, no_start, workflow=None, # pylint: disable=W0613
|
|
274
206
|
tasks=None):
|
|
275
207
|
"""Initialize Workflow and Tasks then start workflow in separate process"""
|
|
@@ -318,7 +250,7 @@ def start_workflow(wf_id):
|
|
|
318
250
|
wfi.set_task_state(task.id, "WAITING")
|
|
319
251
|
wfi.execute_workflow()
|
|
320
252
|
tasks = wfi.get_ready_tasks()
|
|
321
|
-
|
|
253
|
+
submit_tasks_tm(wf_id, tasks)
|
|
322
254
|
update_wf_status(wf_id, "Running")
|
|
323
255
|
return True
|
|
324
256
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "hpc-beeflow"
|
|
3
|
-
version = "0.1.
|
|
4
|
-
description = "
|
|
3
|
+
version = "0.1.12dev1"
|
|
4
|
+
description = "Orchestrates complex simulation workflows through coordination, execution, and monitoring, with support for containerized applications."
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
authors = [
|
|
@@ -70,6 +70,8 @@ gunicorn = ">=20.1,<23.0"
|
|
|
70
70
|
# typer version 0.6 and above seem to be throwing an AssertionError with no
|
|
71
71
|
# attached info
|
|
72
72
|
typer = "^0.5.0"
|
|
73
|
+
# setting click below 8.3.0 avoids a crashing bug with typer version
|
|
74
|
+
click = "8.1.7"
|
|
73
75
|
# Seems to be required for Flux
|
|
74
76
|
cffi = "^1.15.1"
|
|
75
77
|
celery = { version = "^5.3.4", extras = ["redis", "sqlalchemy"] }
|
|
@@ -91,7 +93,7 @@ mpi4py = "^4.1.1"
|
|
|
91
93
|
[tool.poetry.extras]
|
|
92
94
|
cloud_extras = ["google-api-python-client", "python-openstackclient", "python-heatclient"]
|
|
93
95
|
|
|
94
|
-
[tool.poetry.dev
|
|
96
|
+
[tool.poetry.group.dev.dependencies]
|
|
95
97
|
# Developer dependencies
|
|
96
98
|
pylint = "3.3.6"
|
|
97
99
|
pytest = "7.2.0"
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"""Scheduler database code."""
|
|
2
|
-
|
|
3
|
-
import jsonpickle
|
|
4
|
-
from beeflow.common.db import bdb
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class Resources:
|
|
8
|
-
"""Resources wrapper class."""
|
|
9
|
-
|
|
10
|
-
def __init__(self, db_file):
|
|
11
|
-
"""Create the resources class."""
|
|
12
|
-
self.db_file = db_file
|
|
13
|
-
|
|
14
|
-
def __iter__(self):
|
|
15
|
-
"""Create an iterator over the resources."""
|
|
16
|
-
stmt = 'SELECT id, resource FROM resources'
|
|
17
|
-
result = bdb.getall(self.db_file, stmt)
|
|
18
|
-
for rslt in result:
|
|
19
|
-
resource = jsonpickle.decode(rslt[1])
|
|
20
|
-
yield resource
|
|
21
|
-
|
|
22
|
-
def extend(self, resources):
|
|
23
|
-
"""Add a list of new resources."""
|
|
24
|
-
for resource in resources:
|
|
25
|
-
data = jsonpickle.encode(resource)
|
|
26
|
-
stmt = 'INSERT INTO resources (resource) VALUES (?)'
|
|
27
|
-
bdb.run(self.db_file, stmt, [data])
|
|
28
|
-
|
|
29
|
-
def clear(self):
|
|
30
|
-
"""Remove all resources."""
|
|
31
|
-
clear_stmt = 'DELETE FROM resources'
|
|
32
|
-
bdb.run(self.db_file, clear_stmt)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
class SchedDB:
|
|
36
|
-
"""Scheduler database."""
|
|
37
|
-
|
|
38
|
-
def __init__(self, db_file):
|
|
39
|
-
"""Construct a new scheduler database connection."""
|
|
40
|
-
self.db_file = db_file
|
|
41
|
-
self._init_tables()
|
|
42
|
-
|
|
43
|
-
def _init_tables(self):
|
|
44
|
-
"""Initialze the scheduler tables if they don't exist."""
|
|
45
|
-
resource_stmt = """CREATE TABLE IF NOT EXISTS resources(
|
|
46
|
-
id INTEGER PRIMARY KEY ASC,
|
|
47
|
-
resource TEXT);"""
|
|
48
|
-
bdb.create_table(self.db_file, resource_stmt)
|
|
49
|
-
|
|
50
|
-
@property
|
|
51
|
-
def resources(self):
|
|
52
|
-
"""Get resources from the database."""
|
|
53
|
-
return Resources(self.db_file)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
def open_db(db_file):
|
|
57
|
-
"""Open and return a new database."""
|
|
58
|
-
return SchedDB(db_file)
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# Scheduler
|
|
2
|
-
|
|
3
|
-
This directory contains the initial scheduler implementation which will
|
|
4
|
-
connect to the other BEE components through a REST API.
|
|
5
|
-
|
|
6
|
-
- `scheduler.py` - REST API code
|
|
7
|
-
- `sched_types.py` - Task, workflow and resource representation code
|
|
8
|
-
- `allocation.py` - Base scheduling code
|
|
9
|
-
- `algorithms.py` - Code implementing the various scheduling algorithms
|
|
10
|
-
|
|
11
|
-
The scheduler is currently designed to allow for scheduling one set of
|
|
12
|
-
independent tasks at a time. So if a first set of tasks must run before a
|
|
13
|
-
second set of tasks, then that first set must be scheduled first. When the
|
|
14
|
-
first set of tasks has been scheduled and the tasks have completed, then the
|
|
15
|
-
second set of tasks may be scheduled to run.
|
|
16
|
-
|
|
17
|
-
Each task can have a dict of requirements which specify the resources
|
|
18
|
-
that they need to run on. Supported requirement values, right now, are:
|
|
19
|
-
|
|
20
|
-
- `max_runtime` - `int`
|
|
21
|
-
- `cores` - `int`
|
|
22
|
-
|
|
23
|
-
## MARS
|
|
24
|
-
|
|
25
|
-
The MARS part of the scheduler uses reinforcement learning to schedule tasks.
|
|
26
|
-
Before using this algorithm you must have a trained model. The default trained
|
|
27
|
-
model is located in `./model` but can be changed in the config file.
|
|
28
|
-
|
|
29
|
-
To train a model you will need to run `beeflow/scheduler/train.py`. This will
|
|
30
|
-
require a schedule log that is produced by running the scheduler on a number
|
|
31
|
-
of workflows. If defaults are used, training can be as simple as running
|
|
32
|
-
`python beeflow/scheduler/train.py` which will output the model in the
|
|
33
|
-
default directory `./model`.
|
|
34
|
-
|
|
35
|
-
### Evaluation
|
|
36
|
-
|
|
37
|
-
To evaluate MARS you can run `python beeflow/scheduler/evaluate.py` on a
|
|
38
|
-
specific workflow log file. This will output a number of graphs showing a
|
|
39
|
-
performance comparison of the MARS scheduler with other algorithms (like FCFS
|
|
40
|
-
and Backfill).
|