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.
Files changed (308) hide show
  1. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/PKG-INFO +5 -3
  2. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/README.rst +1 -0
  3. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/client/bee_client.py +69 -25
  4. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/client/core.py +28 -31
  5. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/config_driver.py +81 -55
  6. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/config_validator.py +3 -1
  7. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/crt/charliecloud_driver.py +19 -12
  8. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cwl/cwl.py +136 -52
  9. hpc_beeflow-0.1.10.dev1/beeflow/common/cwl/examples/Dockerfile.comd-x86_64 +78 -0
  10. hpc_beeflow-0.1.10.dev1/beeflow/common/cwl/examples/README.txt +51 -0
  11. hpc_beeflow-0.1.10.dev1/beeflow/common/cwl/examples/cat_grep_tar.py +48 -0
  12. hpc_beeflow-0.1.10.dev1/beeflow/common/cwl/examples/comd.py +43 -0
  13. hpc_beeflow-0.1.10.dev1/beeflow/common/cwl/examples/comd_driver.py +82 -0
  14. hpc_beeflow-0.1.10.dev1/beeflow/common/cwl/workflow.py +172 -0
  15. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/db/client_db.py +17 -7
  16. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/gdb/gdb_driver.py +10 -0
  17. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/gdb/neo4j_cypher.py +52 -9
  18. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/gdb/neo4j_driver.py +11 -0
  19. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/wf_interface.py +7 -0
  20. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/slurm_worker.py +20 -8
  21. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/utils.py +19 -0
  22. hpc_beeflow-0.1.10.dev1/beeflow/data/cwl/bee_workflows/cat-grep-fail/lorem.txt +49 -0
  23. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/task_manager/utils.py +4 -2
  24. hpc_beeflow-0.1.10.dev1/beeflow/tests/test_charliecloud_driver.py +70 -0
  25. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_config_driver.py +62 -1
  26. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_db_client.py +6 -0
  27. hpc_beeflow-0.1.10.dev1/beeflow/tests/test_neo4j_cypher.py +56 -0
  28. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_slurm_worker.py +10 -5
  29. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/wf_manager/resources/wf_actions.py +7 -3
  30. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/wf_manager/resources/wf_list.py +3 -2
  31. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/wf_manager/resources/wf_update.py +9 -5
  32. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/wf_manager/wf_manager.py +0 -2
  33. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/pyproject.toml +2 -2
  34. hpc_beeflow-0.1.10.dev0/beeflow/common/cwl/examples/cat_grep_tar_driver.py +0 -75
  35. hpc_beeflow-0.1.10.dev0/beeflow/common/cwl/examples/comd_driver.py +0 -50
  36. hpc_beeflow-0.1.10.dev0/beeflow/wf_manager/resources/wf_metadata.py +0 -18
  37. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/LICENSE +0 -0
  38. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/client/README.md +0 -0
  39. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/cloud_launcher.py +0 -0
  40. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/README.md +0 -0
  41. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/api.py +0 -0
  42. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/build/README.md +0 -0
  43. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/build/build_driver.py +0 -0
  44. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/build/container_drivers.py +0 -0
  45. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/build/utils.py +0 -0
  46. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/build_interfaces.py +0 -0
  47. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cli.py +0 -0
  48. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cli_connection.py +0 -0
  49. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/README.md +0 -0
  50. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/__init__.py +0 -0
  51. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/chameleoncloud.py +0 -0
  52. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/cloud.py +0 -0
  53. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/constants.py +0 -0
  54. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/google.py +0 -0
  55. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/openstack.py +0 -0
  56. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/cloud/provider.py +0 -0
  57. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/config_utils.py +0 -0
  58. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/connection.py +0 -0
  59. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/container_path.py +0 -0
  60. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/crt/crt_driver.py +0 -0
  61. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/crt/singularity_driver.py +0 -0
  62. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/crt_interface.py +0 -0
  63. {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
  64. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/db/bdb.py +0 -0
  65. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/db/sched_db.py +0 -0
  66. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/db/tm_db.py +0 -0
  67. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/db/wfm_db.py +0 -0
  68. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/deps/celery_manager.py +0 -0
  69. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/deps/container_manager.py +0 -0
  70. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/deps/neo4j_manager.py +0 -0
  71. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/deps/redis_manager.py +0 -0
  72. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/expr.py +0 -0
  73. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/gdb/DESIGN.md +0 -0
  74. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/gdb/generate_graph.py +0 -0
  75. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/gdb/graphml_key_updater.py +0 -0
  76. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/integration/generated_workflows.py +0 -0
  77. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/integration/utils.py +0 -0
  78. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/integration_test.py +0 -0
  79. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/log.py +0 -0
  80. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/parser/.gitignore +0 -0
  81. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/parser/README.md +0 -0
  82. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/parser/__init__.py +0 -0
  83. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/parser/parser.py +0 -0
  84. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/paths.py +0 -0
  85. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/states.py +0 -0
  86. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/tab_completion.py +0 -0
  87. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/validation.py +0 -0
  88. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/wf_data.py +0 -0
  89. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/wf_profiler.py +0 -0
  90. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/README.md +0 -0
  91. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/__init__.py +0 -0
  92. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/flux_worker.py +0 -0
  93. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/lsf_worker.py +0 -0
  94. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/simple_worker.py +0 -0
  95. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker/worker.py +0 -0
  96. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/common/worker_interface.py +0 -0
  97. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cloud_templates/dora.jinja +0 -0
  98. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cloud_templates/dora.yaml +0 -0
  99. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/README.md +0 -0
  100. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/README.md +0 -0
  101. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/README.md +0 -0
  102. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast.yml +0 -0
  103. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_output.cwl +0 -0
  104. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_output_err.cwl +0 -0
  105. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_split.cwl +0 -0
  106. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_wf.cwl +0 -0
  107. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_worker001.cwl +0 -0
  108. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/blast_worker002.cwl +0 -0
  109. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/blast/input/small.fasta +0 -0
  110. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/README.md +0 -0
  111. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/cat.cwl +0 -0
  112. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep0.cwl +0 -0
  113. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep1.cwl +0 -0
  114. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/input.yml +0 -0
  115. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/tar.cwl +0 -0
  116. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/cat-grep-fail/workflow.cwl +0 -0
  117. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/README.md +0 -0
  118. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr.cwl +0 -0
  119. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.json +0 -0
  120. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.yml +0 -0
  121. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_wf.cwl +0 -0
  122. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-ci/ffmpeg.cwl +0 -0
  123. {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
  124. {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
  125. {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
  126. {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
  127. {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
  128. {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
  129. {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
  130. {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
  131. {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
  132. {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
  133. {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
  134. {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
  135. {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
  136. {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
  137. {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
  138. {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
  139. {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
  140. {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
  141. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/README.md +0 -0
  142. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr.cwl +0 -0
  143. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.json +0 -0
  144. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.yml +0 -0
  145. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_wf.cwl +0 -0
  146. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf/ffmpeg.cwl +0 -0
  147. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/README.md +0 -0
  148. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr.cwl +0 -0
  149. {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
  150. {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
  151. {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
  152. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/ffmpeg.cwl +0 -0
  153. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/README.md +0 -0
  154. {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
  155. {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
  156. {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
  157. {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
  158. {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
  159. {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
  160. {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
  161. {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
  162. {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
  163. {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
  164. {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
  165. {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
  166. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/README.md +0 -0
  167. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr.cwl +0 -0
  168. {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
  169. {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
  170. {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
  171. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/ffmpeg.cwl +0 -0
  172. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/README.md +0 -0
  173. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr.cwl +0 -0
  174. {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
  175. {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
  176. {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
  177. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/ffmpeg.cwl +0 -0
  178. {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
  179. {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
  180. {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
  181. {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
  182. {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
  183. {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
  184. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.cwl +0 -0
  185. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.yml +0 -0
  186. {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
  187. {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
  188. {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
  189. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/nwchem-mpi/README.md +0 -0
  190. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.cwl +0 -0
  191. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.yml +0 -0
  192. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem_bin.cwl +0 -0
  193. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant/graph.cwl +0 -0
  194. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant.yml +0 -0
  195. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant_1_node.cwl +0 -0
  196. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant_2_node.cwl +0 -0
  197. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant_4_node.cwl +0 -0
  198. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant/pennant_wf.cwl +0 -0
  199. {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
  200. {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
  201. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/graph.cwl +0 -0
  202. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.py +0 -0
  203. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.sh +0 -0
  204. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant.yml +0 -0
  205. {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
  206. {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
  207. {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
  208. {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
  209. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_wf.cwl +0 -0
  210. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/pytest.ini +0 -0
  211. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/README.md +0 -0
  212. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/bee_workflows/simple-workflows/cancel.cwl +0 -0
  213. {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
  214. {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
  215. {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
  216. {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
  217. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/README.md +0 -0
  218. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/builder/dockerFile.cwl +0 -0
  219. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/builder/dockerPull.cwl +0 -0
  220. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/grep-wordcount/gc.cwl +0 -0
  221. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/grep-wordcount/lorem.txt +0 -0
  222. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/helloworld.cwl +0 -0
  223. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/cwl/cwl_validation/helloworld_input.yaml +0 -0
  224. {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
  225. {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
  226. {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
  227. {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
  228. {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
  229. {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
  230. {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
  231. {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
  232. {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
  233. {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
  234. {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
  235. {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
  236. {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
  237. {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
  238. {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
  239. {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
  240. {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
  241. {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
  242. {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
  243. {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
  244. {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
  245. {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
  246. {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
  247. {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
  248. {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
  249. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.builder_demo +0 -0
  250. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.clamr-ffmpeg +0 -0
  251. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.clamr-lanl-x86_64 +0 -0
  252. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.clamr-ppc64le +0 -0
  253. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.comd-flux-x86_64 +0 -0
  254. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.deb9ompi-x86_64 +0 -0
  255. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.lulesh-x86_64 +0 -0
  256. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.neo4j +0 -0
  257. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.nwchem-x86_64 +0 -0
  258. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.pennant-flux-x86_64 +0 -0
  259. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/Dockerfile.vaspompi-x86_64 +0 -0
  260. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/README.md +0 -0
  261. {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
  262. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.debian +0 -0
  263. {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
  264. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/comd-pmix-support/README.md +0 -0
  265. {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
  266. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/pennant-graph/Dockerfile.pennant-graph-x86_64 +0 -0
  267. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.py +0 -0
  268. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.sh +0 -0
  269. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/remote/remote.py +0 -0
  270. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/README.md +0 -0
  271. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/algorithms.py +0 -0
  272. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/resource_allocation.py +0 -0
  273. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/scheduler.py +0 -0
  274. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/scheduler.yaml +0 -0
  275. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/serializable.py +0 -0
  276. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/scheduler/task.py +0 -0
  277. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/task_manager/background.py +0 -0
  278. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/task_manager/task_actions.py +0 -0
  279. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/task_manager/task_manager.py +0 -0
  280. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/task_manager/task_submit.py +0 -0
  281. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/42.tgz +0 -0
  282. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/README.md +0 -0
  283. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/cf.cwl +0 -0
  284. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/clamr.cwl +0 -0
  285. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/clamr_job.json +0 -0
  286. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/clamr_job.yml +0 -0
  287. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/clamr_wf.cwl +0 -0
  288. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/ffmpeg.cwl +0 -0
  289. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/mv_script.cwl +0 -0
  290. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf/mv_script.sh +0 -0
  291. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/clamr-wf.tgz +0 -0
  292. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/gdb.py +0 -0
  293. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/mocks.py +0 -0
  294. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_cloud.py +0 -0
  295. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_config_utils.py +0 -0
  296. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_config_validator.py +0 -0
  297. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_container_path.py +0 -0
  298. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_db_sched.py +0 -0
  299. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_db_tm.py +0 -0
  300. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_parser.py +0 -0
  301. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_scheduler.py +0 -0
  302. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_scheduler_resource_allocation.py +0 -0
  303. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_scheduler_rest.py +0 -0
  304. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_tm.py +0 -0
  305. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_wf_interface.py +0 -0
  306. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/tests/test_wf_manager.py +0 -0
  307. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.10.dev1}/beeflow/wf_manager/common/wf_db.py +0 -0
  308. {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.dev0
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.12.2
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
- db = bdb.connect_db(client_db, db_path())
85
- start_hn = db.info.get_hostname()
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
- if start_hn == "":
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 = bc.get('slurm', 'openapi_version')
269
- if not openapi_version:
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
- # Check if running on compute node under Slurm scheduler
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
- elif bee_client.get_hostname() != start_hn:
422
- warn(f'Error: beeflow is already running on "{bee_client.get_hostname()}."')
423
- sys.exit(1)
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.setup_hostname("")
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
- VALIDATOR.option('slurm', 'openapi_version', default='v0.0.39',
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
- print_wrap('This will walk you through creating a new configuration for BEE. '
381
- 'Note that you will only be required to enter values for options '
382
- 'without defaults. Please take a look at the other options and '
383
- 'their defaults before running BEE.')
384
- print()
385
- print('Please enter values for the following sections and options:')
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.default is not None:
403
- default = option.default
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
- ans = input('Would you like to save this config? [y/n] ')
447
- if ans.lower() != 'y':
448
- print('Quitting without saving')
449
- return
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.\nWould you like to save a copy of it?'):
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().save()
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."""