hpc-beeflow 0.1.10.dev0__tar.gz → 0.1.11.dev0__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 (340) hide show
  1. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/PKG-INFO +9 -6
  2. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/README.rst +1 -0
  3. hpc_beeflow-0.1.11.dev0/beeflow/__init__.py +1 -0
  4. hpc_beeflow-0.1.11.dev0/beeflow/client/__init__.py +1 -0
  5. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/client/bee_client.py +88 -39
  6. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/client/core.py +51 -51
  7. hpc_beeflow-0.1.11.dev0/beeflow/client/remote_client.py +178 -0
  8. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/cloud_launcher.py +5 -3
  9. hpc_beeflow-0.1.11.dev0/beeflow/common/__init__.py +1 -0
  10. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/api.py +1 -1
  11. hpc_beeflow-0.1.11.dev0/beeflow/common/build/__init__.py +1 -0
  12. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/build/container_drivers.py +7 -5
  13. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/build_interfaces.py +3 -5
  14. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cli.py +1 -1
  15. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/__init__.py +4 -2
  16. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/chameleoncloud.py +1 -1
  17. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/google.py +2 -2
  18. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/config_driver.py +91 -63
  19. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/config_utils.py +1 -1
  20. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/config_validator.py +3 -1
  21. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/connection.py +1 -1
  22. hpc_beeflow-0.1.11.dev0/beeflow/common/crt/__init__.py +1 -0
  23. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/crt/charliecloud_driver.py +21 -14
  24. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/crt_interface.py +3 -2
  25. hpc_beeflow-0.1.11.dev0/beeflow/common/cwl/__init__.py +1 -0
  26. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cwl/cwl.py +143 -56
  27. hpc_beeflow-0.1.11.dev0/beeflow/common/cwl/examples/Dockerfile.comd-x86_64 +78 -0
  28. hpc_beeflow-0.1.11.dev0/beeflow/common/cwl/examples/README.txt +51 -0
  29. hpc_beeflow-0.1.11.dev0/beeflow/common/cwl/examples/cat_grep_tar.py +48 -0
  30. hpc_beeflow-0.1.11.dev0/beeflow/common/cwl/examples/comd.py +48 -0
  31. hpc_beeflow-0.1.11.dev0/beeflow/common/cwl/examples/comd_driver.py +82 -0
  32. hpc_beeflow-0.1.11.dev0/beeflow/common/cwl/examples/comd_pre.sh +2 -0
  33. hpc_beeflow-0.1.11.dev0/beeflow/common/cwl/workflow.py +185 -0
  34. hpc_beeflow-0.1.11.dev0/beeflow/common/db/__init__.py +1 -0
  35. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/db/client_db.py +18 -8
  36. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/db/tm_db.py +2 -2
  37. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/db/wfm_db.py +7 -3
  38. hpc_beeflow-0.1.11.dev0/beeflow/common/deps/__init__.py +1 -0
  39. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/deps/container_manager.py +1 -1
  40. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/deps/neo4j_manager.py +1 -1
  41. hpc_beeflow-0.1.11.dev0/beeflow/common/gdb/__init__.py +1 -0
  42. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/gdb/gdb_driver.py +18 -1
  43. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/gdb/generate_graph.py +2 -5
  44. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/gdb/neo4j_cypher.py +91 -13
  45. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/gdb/neo4j_driver.py +50 -6
  46. hpc_beeflow-0.1.11.dev0/beeflow/common/integration/__init__.py +1 -0
  47. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/integration/utils.py +6 -0
  48. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/integration_test.py +30 -5
  49. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/parser/__init__.py +1 -1
  50. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/parser/parser.py +3 -3
  51. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/validation.py +6 -4
  52. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/wf_data.py +1 -4
  53. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/wf_interface.py +14 -0
  54. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/__init__.py +1 -1
  55. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/flux_worker.py +10 -8
  56. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/lsf_worker.py +1 -10
  57. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/slurm_worker.py +107 -89
  58. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/utils.py +19 -0
  59. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/worker.py +31 -6
  60. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker_interface.py +3 -2
  61. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cat-grep-fail/lorem.txt +49 -0
  62. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/README.txt +3 -0
  63. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/cat.cwl +17 -0
  64. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/cat2.cwl +17 -0
  65. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/grep0.cwl +18 -0
  66. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/grep1.cwl +18 -0
  67. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/grep2.cwl +18 -0
  68. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/grep3.cwl +18 -0
  69. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/input.yml +8 -0
  70. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/lorem.txt +49 -0
  71. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/tar.cwl +24 -0
  72. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/tar2.cwl +24 -0
  73. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/workflow.cwl +78 -0
  74. {hpc_beeflow-0.1.10.dev0/beeflow/data/dockerfiles/pennant-graph → hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/pennant-build}/graph_pennant.py +4 -3
  75. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree.py +4 -2
  76. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/linear_regression.py +4 -2
  77. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/predict_code.py +4 -2
  78. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/read_dataset.py +4 -2
  79. {hpc_beeflow-0.1.10.dev0/beeflow/data/cwl/bee_workflows/pennant-build → hpc_beeflow-0.1.11.dev0/beeflow/data/dockerfiles/pennant-graph}/graph_pennant.py +4 -3
  80. hpc_beeflow-0.1.11.dev0/beeflow/remote/__init__.py +1 -0
  81. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/remote/remote.py +1 -2
  82. hpc_beeflow-0.1.11.dev0/beeflow/scheduler/__init__.py +1 -0
  83. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/algorithms.py +4 -4
  84. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/resource_allocation.py +4 -3
  85. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/scheduler.py +7 -7
  86. hpc_beeflow-0.1.11.dev0/beeflow/task_manager/__init__.py +1 -0
  87. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/task_manager/background.py +17 -7
  88. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/task_manager/task_actions.py +1 -1
  89. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/task_manager/utils.py +4 -2
  90. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/mocks.py +35 -35
  91. hpc_beeflow-0.1.11.dev0/beeflow/tests/test_charliecloud_driver.py +70 -0
  92. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_config_driver.py +62 -1
  93. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_config_validator.py +5 -5
  94. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_db_client.py +11 -3
  95. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_db_sched.py +5 -3
  96. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_db_tm.py +5 -3
  97. hpc_beeflow-0.1.11.dev0/beeflow/tests/test_neo4j_cypher.py +80 -0
  98. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_parser.py +16 -16
  99. hpc_beeflow-0.1.11.dev0/beeflow/tests/test_remote.py +112 -0
  100. hpc_beeflow-0.1.11.dev0/beeflow/tests/test_remote_client.py +275 -0
  101. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_scheduler_resource_allocation.py +4 -2
  102. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_scheduler_rest.py +5 -5
  103. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_slurm_worker.py +32 -14
  104. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_tm.py +3 -3
  105. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_wf_interface.py +3 -3
  106. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_wf_manager.py +2 -1
  107. hpc_beeflow-0.1.11.dev0/beeflow/tests/test_wf_update.py +139 -0
  108. hpc_beeflow-0.1.11.dev0/beeflow/wf_manager/__init__.py +1 -0
  109. hpc_beeflow-0.1.11.dev0/beeflow/wf_manager/resources/__init__.py +1 -0
  110. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/wf_manager/resources/wf_actions.py +11 -3
  111. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/wf_manager/resources/wf_list.py +4 -3
  112. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/wf_manager/resources/wf_update.py +33 -22
  113. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/wf_manager/resources/wf_utils.py +40 -13
  114. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/wf_manager/wf_manager.py +2 -8
  115. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/pyproject.toml +7 -9
  116. hpc_beeflow-0.1.10.dev0/beeflow/common/cwl/examples/cat_grep_tar_driver.py +0 -75
  117. hpc_beeflow-0.1.10.dev0/beeflow/common/cwl/examples/comd_driver.py +0 -50
  118. hpc_beeflow-0.1.10.dev0/beeflow/wf_manager/common/wf_db.py +0 -342
  119. hpc_beeflow-0.1.10.dev0/beeflow/wf_manager/resources/wf_metadata.py +0 -18
  120. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/LICENSE +0 -0
  121. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/client/README.md +0 -0
  122. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/README.md +0 -0
  123. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/build/README.md +0 -0
  124. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/build/build_driver.py +0 -0
  125. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/build/utils.py +0 -0
  126. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cli_connection.py +0 -0
  127. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/README.md +0 -0
  128. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/cloud.py +0 -0
  129. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/constants.py +0 -0
  130. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/openstack.py +0 -0
  131. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/provider.py +0 -0
  132. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/container_path.py +0 -0
  133. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/crt/crt_driver.py +0 -0
  134. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/crt/singularity_driver.py +0 -0
  135. {hpc_beeflow-0.1.10.dev0/beeflow/data/cwl/bee_workflows/cat-grep-fail → hpc_beeflow-0.1.11.dev0/beeflow/common/cwl/examples}/lorem.txt +0 -0
  136. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/db/bdb.py +0 -0
  137. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/db/sched_db.py +0 -0
  138. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/deps/celery_manager.py +0 -0
  139. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/deps/redis_manager.py +0 -0
  140. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/expr.py +0 -0
  141. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/gdb/DESIGN.md +0 -0
  142. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/gdb/graphml_key_updater.py +0 -0
  143. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/integration/generated_workflows.py +0 -0
  144. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/log.py +0 -0
  145. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/parser/.gitignore +0 -0
  146. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/parser/README.md +0 -0
  147. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/paths.py +0 -0
  148. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/states.py +0 -0
  149. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/tab_completion.py +0 -0
  150. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/wf_profiler.py +0 -0
  151. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/README.md +0 -0
  152. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/simple_worker.py +0 -0
  153. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cloud_templates/dora.jinja +0 -0
  154. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cloud_templates/dora.yaml +0 -0
  155. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/README.md +0 -0
  156. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/README.md +0 -0
  157. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/README.md +0 -0
  158. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast.yml +0 -0
  159. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast_output.cwl +0 -0
  160. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast_output_err.cwl +0 -0
  161. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast_split.cwl +0 -0
  162. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast_wf.cwl +0 -0
  163. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast_worker001.cwl +0 -0
  164. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast_worker002.cwl +0 -0
  165. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/input/small.fasta +0 -0
  166. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/README.md +0 -0
  167. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/cat.cwl +0 -0
  168. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep0.cwl +0 -0
  169. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep1.cwl +0 -0
  170. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/input.yml +0 -0
  171. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/tar.cwl +0 -0
  172. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/workflow.cwl +0 -0
  173. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ci/README.md +0 -0
  174. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr.cwl +0 -0
  175. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.json +0 -0
  176. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.yml +0 -0
  177. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_wf.cwl +0 -0
  178. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ci/ffmpeg.cwl +0 -0
  179. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/Dockerfile.clamr-ffmpeg +0 -0
  180. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/README.md +0 -0
  181. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr.cwl +0 -0
  182. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_job.json +0 -0
  183. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_job.yml +0 -0
  184. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_wf.cwl +0 -0
  185. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/ffmpeg.cwl +0 -0
  186. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/post_run.sh +0 -0
  187. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/pre_run.sh +0 -0
  188. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/Dockerfile.clamr-ffmpeg +0 -0
  189. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/README.md +0 -0
  190. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr.cwl +0 -0
  191. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_job.json +0 -0
  192. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_job.yml +0 -0
  193. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_wf.cwl +0 -0
  194. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/ffmpeg.cwl +0 -0
  195. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/post_run.sh +0 -0
  196. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/pre_run.sh +0 -0
  197. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf/README.md +0 -0
  198. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr.cwl +0 -0
  199. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.json +0 -0
  200. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.yml +0 -0
  201. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_wf.cwl +0 -0
  202. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf/ffmpeg.cwl +0 -0
  203. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/README.md +0 -0
  204. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr.cwl +0 -0
  205. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_job.json +0 -0
  206. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_job.yml +0 -0
  207. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_wf.cwl +0 -0
  208. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/ffmpeg.cwl +0 -0
  209. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/README.md +0 -0
  210. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/lsf-charliecloud/README.md +0 -0
  211. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/lsf-charliecloud/cf-summit.cwl +0 -0
  212. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/Dockerfile.clamr-lanl-x86_64 +0 -0
  213. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/README.md +0 -0
  214. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf-darwin.cwl +0 -0
  215. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf-no-owrite.cwl +0 -0
  216. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf.cwl +0 -0
  217. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/copyContainer_containerName.cwl +0 -0
  218. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/dockerFile_containerName.cwl +0 -0
  219. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/dockerPull.cwl +0 -0
  220. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-singularity/README.md +0 -0
  221. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-singularity/cf-singularity.cwl +0 -0
  222. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/README.md +0 -0
  223. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr.cwl +0 -0
  224. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_job.json +0 -0
  225. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_job.yml +0 -0
  226. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_wf.cwl +0 -0
  227. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/ffmpeg.cwl +0 -0
  228. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/README.md +0 -0
  229. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr.cwl +0 -0
  230. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_job.json +0 -0
  231. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_job.yml +0 -0
  232. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_wf.cwl +0 -0
  233. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/ffmpeg.cwl +0 -0
  234. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/README.md +0 -0
  235. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr.cwl +0 -0
  236. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_job.json +0 -0
  237. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_job.yml +0 -0
  238. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_wf.cwl +0 -0
  239. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/ffmpeg.cwl +0 -0
  240. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.cwl +0 -0
  241. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.yml +0 -0
  242. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh.cwl +0 -0
  243. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh_job.yml +0 -0
  244. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh_wf.cwl +0 -0
  245. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/nwchem-mpi/README.md +0 -0
  246. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.cwl +0 -0
  247. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.yml +0 -0
  248. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem_bin.cwl +0 -0
  249. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant/graph.cwl +0 -0
  250. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant/pennant.yml +0 -0
  251. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant/pennant_1_node.cwl +0 -0
  252. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant/pennant_2_node.cwl +0 -0
  253. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant/pennant_4_node.cwl +0 -0
  254. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant/pennant_wf.cwl +0 -0
  255. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/Dockerfile.pennant-flux-x86_64 +0 -0
  256. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/Dockerfile.pennant-graph-x86_64 +0 -0
  257. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/graph.cwl +0 -0
  258. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.sh +0 -0
  259. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/pennant.yml +0 -0
  260. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_1_node.cwl +0 -0
  261. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_2_node.cwl +0 -0
  262. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_4_node.cwl +0 -0
  263. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_8_node.cwl +0 -0
  264. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_wf.cwl +0 -0
  265. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pytest.ini +0 -0
  266. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/simple-workflows/README.md +0 -0
  267. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/simple-workflows/cancel.cwl +0 -0
  268. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/README.md +0 -0
  269. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/gc-nc.cwl +0 -0
  270. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/gc.cwl +0 -0
  271. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/lorem.txt +0 -0
  272. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/README.md +0 -0
  273. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/builder/dockerFile.cwl +0 -0
  274. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/builder/dockerPull.cwl +0 -0
  275. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/grep-wordcount/gc.cwl +0 -0
  276. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/grep-wordcount/lorem.txt +0 -0
  277. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/helloworld.cwl +0 -0
  278. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/helloworld_input.yaml +0 -0
  279. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/DAG_example-1.png +0 -0
  280. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/README.md +0 -0
  281. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add.cwl +0 -0
  282. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add_multiply_example_workflow.cwl +0 -0
  283. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add_step1.py +0 -0
  284. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/isolated test.cwl +0 -0
  285. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/job.yaml +0 -0
  286. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/multiply.cwl +0 -0
  287. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/multiply_step2.py +0 -0
  288. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/workflow_generater_python.py +0 -0
  289. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/README.md +0 -0
  290. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree_output.txt +0 -0
  291. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree_tool.cwl +0 -0
  292. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/expectedValue.txt +0 -0
  293. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/hiring1.txt +0 -0
  294. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/linear_regress_output.txt +0 -0
  295. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/machinelearning_pipeline.cwl +0 -0
  296. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/out.PNG +0 -0
  297. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/predict_tool.cwl +0 -0
  298. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/read_dataset_tool.cwl +0 -0
  299. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/regress_tool.cwl +0 -0
  300. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.builder_demo +0 -0
  301. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.clamr-ffmpeg +0 -0
  302. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.clamr-lanl-x86_64 +0 -0
  303. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.clamr-ppc64le +0 -0
  304. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.comd-flux-x86_64 +0 -0
  305. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.deb9ompi-x86_64 +0 -0
  306. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.lulesh-x86_64 +0 -0
  307. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.neo4j +0 -0
  308. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.nwchem-x86_64 +0 -0
  309. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.pennant-flux-x86_64 +0 -0
  310. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.vaspompi-x86_64 +0 -0
  311. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/README.md +0 -0
  312. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.comd-x86_64-wpmix +0 -0
  313. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.debian +0 -0
  314. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.openmpi-3.1.5 +0 -0
  315. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/comd-pmix-support/README.md +0 -0
  316. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/comd-pmix-support/dont-init-ucx-on-intel-cray.patch +0 -0
  317. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/pennant-graph/Dockerfile.pennant-graph-x86_64 +0 -0
  318. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.sh +0 -0
  319. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/README.md +0 -0
  320. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/scheduler.yaml +0 -0
  321. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/serializable.py +0 -0
  322. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/task.py +0 -0
  323. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/task_manager/task_manager.py +0 -0
  324. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/task_manager/task_submit.py +0 -0
  325. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/42.tgz +0 -0
  326. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/README.md +0 -0
  327. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/cf.cwl +0 -0
  328. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/clamr.cwl +0 -0
  329. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/clamr_job.json +0 -0
  330. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/clamr_job.yml +0 -0
  331. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/clamr_wf.cwl +0 -0
  332. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/ffmpeg.cwl +0 -0
  333. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/mv_script.cwl +0 -0
  334. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/mv_script.sh +0 -0
  335. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf.tgz +0 -0
  336. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/gdb.py +0 -0
  337. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_cloud.py +0 -0
  338. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_config_utils.py +0 -0
  339. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_container_path.py +0 -0
  340. {hpc_beeflow-0.1.10.dev0 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_scheduler.py +0 -0
@@ -1,12 +1,11 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: hpc-beeflow
3
- Version: 0.1.10.dev0
3
+ Version: 0.1.11.dev0
4
4
  Summary: A software package for containerizing HPC applications and managing job workflows
5
- Home-page: https://github.com/lanl/BEE
6
5
  Keywords: bee,hpc,workflow,cluster,computing
7
6
  Author: BEE-LANL Dev Team
8
7
  Author-email: bee-dev@lanl.gov
9
- Requires-Python: >=3.8.3,<=3.12.2
8
+ Requires-Python: >=3.8.3,<=3.13.0
10
9
  Classifier: Environment :: Console
11
10
  Classifier: Environment :: OpenStack
12
11
  Classifier: Environment :: Other Environment
@@ -19,7 +18,8 @@ Classifier: Programming Language :: Python :: 3
19
18
  Classifier: Programming Language :: Python :: 3.9
20
19
  Classifier: Programming Language :: Python :: 3.10
21
20
  Classifier: Programming Language :: Python :: 3.11
22
- Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
23
  Classifier: Programming Language :: Python :: Implementation :: CPython
24
24
  Classifier: Topic :: Scientific/Engineering
25
25
  Classifier: Topic :: System :: Clustering
@@ -34,7 +34,7 @@ Requires-Dist: celery[redis,sqlalchemy] (>=5.3.4,<6.0.0)
34
34
  Requires-Dist: cffi (>=1.15.1,<2.0.0)
35
35
  Requires-Dist: cwl-utils (>=0.16,<0.17)
36
36
  Requires-Dist: docutils (==0.18.1)
37
- Requires-Dist: fastapi (==0.109.2)
37
+ Requires-Dist: fastapi (==0.115.8)
38
38
  Requires-Dist: flask_restful (==0.3.9)
39
39
  Requires-Dist: google-api-python-client (>=2.66.0,<3.0.0) ; extra == "cloud-extras"
40
40
  Requires-Dist: graphviz (>=0.20.3,<0.21.0)
@@ -42,6 +42,8 @@ Requires-Dist: gunicorn (>=20.1,<23.0)
42
42
  Requires-Dist: jsonpickle (>=2.2.0,<3.0.0)
43
43
  Requires-Dist: neo4j (>=5,<6)
44
44
  Requires-Dist: networkx (==3.1)
45
+ Requires-Dist: pre-commit (==3.5.0)
46
+ Requires-Dist: pylint (==3.2.7)
45
47
  Requires-Dist: python-daemon (>=2.3.1,<3.0.0)
46
48
  Requires-Dist: python-heatclient (>=3.1.0,<4.0.0) ; extra == "cloud-extras"
47
49
  Requires-Dist: python-openstackclient (>=6.0.0,<7.0.0) ; extra == "cloud-extras"
@@ -110,6 +112,7 @@ Contributors:
110
112
  * Patricia Grubel - `pagrubel <https://github.com/pagrubel>`_
111
113
  * Qiang Guan - `guanxyz <https://github.com/guanxyz>`_
112
114
  * Ragini Gupta - `raginigupta6 <https://github.com/raginigupta6>`_
115
+ * Aaron R Hall - `arhall0 <https://github.com/arhall0>`_
113
116
  * Leah Howell - `Leahh02 <https://github.com/Leahh02>`_
114
117
  * Andres Quan - `aquan9 <https://github.com/aquan9>`_
115
118
  * 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>`_
@@ -0,0 +1 @@
1
+ """beeflow module."""
@@ -0,0 +1 @@
1
+ """beeflow client module."""
@@ -4,6 +4,11 @@
4
4
  This script provides a client interface to the user to manage workflows.
5
5
  Capablities include submitting, starting, listing, pausing and cancelling workflows.
6
6
  """
7
+
8
+ # Disable W0511: This allows us to have TODOs in the code
9
+ # Disable R1732: Significant code restructuring required to fix
10
+ # pylint:disable=W0511,R1732
11
+
7
12
  import os
8
13
  import sys
9
14
  import logging
@@ -11,6 +16,7 @@ import inspect
11
16
  import pathlib
12
17
  import shutil
13
18
  import subprocess
19
+ import getpass
14
20
  import tarfile
15
21
  import tempfile
16
22
  import textwrap
@@ -27,13 +33,14 @@ from beeflow.common.connection import Connection
27
33
  from beeflow.common import paths
28
34
  from beeflow.common.parser import CwlParser
29
35
  from beeflow.common.wf_data import generate_workflow_id
30
- from beeflow.client import core
36
+ from beeflow.client import core # pylint: disable=R0401 #WIP
37
+ from beeflow.client import remote_client
31
38
  from beeflow.wf_manager.resources import wf_utils
32
39
  from beeflow.common.db import client_db
33
40
  from beeflow.common.db import bdb
34
41
 
35
42
  # Length of a shortened workflow ID
36
- short_id_len = 6 #noqa: Not a constant
43
+ short_id_len = 6 # pylint: disable=C0103 # not a constant
37
44
 
38
45
  # Maximum length of a workflow ID
39
46
  MAX_ID_LEN = 32
@@ -79,15 +86,78 @@ def get_hostname():
79
86
  return curr_hn
80
87
 
81
88
 
89
+ def set_backend_status(new_status):
90
+ """Set backend flag to true in database."""
91
+ db = bdb.connect_db(client_db, db_path())
92
+ db.info.set_backend_status(new_status)
93
+
94
+
95
+ def check_backend_status():
96
+ """Check if backend flag has been set."""
97
+ db = bdb.connect_db(client_db, db_path())
98
+ status = db.info.get_backend_status()
99
+ return status
100
+
101
+
102
+ def reset_client_db():
103
+ """Reset client db when beeflow is stopped."""
104
+ setup_hostname("")
105
+ set_backend_status("")
106
+
107
+
108
+ def check_backend_jobs(start_hn, command=False):
109
+ """Check if there is an instance of beeflow running on a backend node."""
110
+ user_name = getpass.getuser()
111
+ cmd = ['squeue', '-u', f'{user_name}', '-o', '%N', '-h']
112
+ resp = subprocess.run(cmd, text=True, check=True, stdout=subprocess.PIPE)
113
+
114
+ # iterate through available nodes
115
+ data = resp.stdout.splitlines()
116
+ cur_alloc = False
117
+ if get_hostname() in data:
118
+ cur_alloc = True
119
+
120
+ if cur_alloc:
121
+ if command:
122
+ warn(f'beeflow was started on "{get_hostname()}" and you are trying to '
123
+ f'run a command on "{start_hn}".')
124
+ sys.exit(1)
125
+ else:
126
+ warn(f'beeflow was started on compute node "{get_hostname()}" '
127
+ 'and it is still running. ')
128
+ sys.exit(1)
129
+ else: # beeflow was started on compute node but user no longer owns node
130
+ if command:
131
+ warn('beeflow has not been started!')
132
+ sys.exit(1)
133
+ else:
134
+ warn('beeflow was started on a compute node (no longer owned by user) and '
135
+ 'not stopped correctly. ')
136
+ warn("Resetting client database.")
137
+ reset_client_db()
138
+ setup_hostname(start_hn) # add to client db
139
+
140
+
141
+ def check_db_flags(start_hn):
142
+ """Check that beeflow was stopped correctly during the last run."""
143
+ if get_hostname() and get_hostname() != start_hn and check_backend_status() == "":
144
+ warn(f'Error: beeflow is already running on "{get_hostname()}".')
145
+ sys.exit(1)
146
+ if get_hostname() and get_hostname() != start_hn and check_backend_status() == "true":
147
+ check_backend_jobs(start_hn)
148
+
149
+
82
150
  def check_hostname(curr_hn):
83
151
  """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 '
152
+ if get_hostname() and curr_hn != get_hostname() and check_backend_status() == "":
153
+ warn(f'beeflow was started on "{get_hostname()}" and you are trying to '
88
154
  f'run a command on "{curr_hn}".')
89
- if start_hn == "":
155
+ sys.exit(1)
156
+ elif get_hostname() and curr_hn != get_hostname() and check_backend_status() == "true":
157
+ check_backend_jobs(curr_hn, command=True)
158
+ if get_hostname() == "" and check_backend_status() == "":
90
159
  warn('beeflow has not been started!')
160
+ sys.exit(1)
91
161
 
92
162
 
93
163
  def error_exit(msg, include_caller=True):
@@ -103,7 +173,7 @@ def error_exit(msg, include_caller=True):
103
173
  raise ClientError(msg) from None
104
174
 
105
175
 
106
- def error_handler(resp): # noqa (this is an error handler, it doesn't need to return an expression)
176
+ def error_handler(resp): # pylint: disable=R1710 # error handler doesn't need to return an expression
107
177
  """Handle a 500 error in a response."""
108
178
  if resp.status_code != 500:
109
179
  return resp
@@ -167,7 +237,7 @@ def get_wf_list():
167
237
 
168
238
  def check_short_id_collision():
169
239
  """Check short workflow IDs for colliions; increase short ID length if detected."""
170
- global short_id_len #noqa: Not a constant
240
+ global short_id_len
171
241
  workflow_list = get_wf_list()
172
242
  if workflow_list:
173
243
  while short_id_len < MAX_ID_LEN:
@@ -227,6 +297,7 @@ def get_wf_status(wf_id):
227
297
 
228
298
  app = typer.Typer(no_args_is_help=True, add_completion=False, cls=NaturalOrderGroup)
229
299
  app.add_typer(core.app, name='core')
300
+ app.add_typer(remote_client.app, name='remote')
230
301
  app.add_typer(config_driver.app, name='config')
231
302
 
232
303
 
@@ -254,6 +325,8 @@ def submit(wf_name: str = typer.Argument(..., help='the workflow name'), # pyli
254
325
  workdir = workdir.resolve()
255
326
 
256
327
  tarball_path = ""
328
+ workflow = None
329
+ wf_tarball = None
257
330
  if os.path.exists(wf_path):
258
331
  # Check to see if the wf_path is a tarball or a directory. Package if directory
259
332
  if os.path.isdir(wf_path):
@@ -406,13 +479,13 @@ def package(wf_path: pathlib.Path = typer.Argument(...,
406
479
  # Just use tar with subprocess. Python's tar library is not performant.
407
480
  return_code = subprocess.run(['tar', '-C', parent_dir, '-czf', tarball, wf_dir],
408
481
  check=True).returncode
409
- package_path = package_dest.resolve()/tarball # noqa: Not an arithmetic operation
482
+ package_path = package_dest.resolve()/tarball
410
483
 
411
484
  # Get the curent working directory
412
485
  cwd = pathlib.Path().absolute()
413
486
  if package_dest != cwd:
414
487
  # Move the tarball if the directory it's wanted in is not in the current working directory
415
- tarball_path = cwd/tarball # noqa: Not an arithmetic operation
488
+ tarball_path = cwd/tarball
416
489
  shutil.move(tarball_path, package_path)
417
490
 
418
491
  if return_code != 0:
@@ -515,25 +588,6 @@ def query(wf_id: str = typer.Argument(..., callback=match_short_id)):
515
588
  return wf_status, tasks_status
516
589
 
517
590
 
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
591
  @app.command()
538
592
  def pause(wf_id: str = typer.Argument(..., callback=match_short_id)):
539
593
  """Pause a workflow (Running tasks will finish)."""
@@ -612,6 +666,7 @@ def reexecute(wf_name: str = typer.Argument(..., help='The workflow name'),
612
666
  help='working directory for workflow containing input + output files')
613
667
  ):
614
668
  """Reexecute an archived workflow."""
669
+ wf_tarball = None
615
670
  if os.path.exists(wf_path):
616
671
  wf_tarball = open(wf_path, 'rb')
617
672
  else:
@@ -655,7 +710,7 @@ def reexecute(wf_name: str = typer.Argument(..., help='The workflow name'),
655
710
  except requests.exceptions.ConnectionError:
656
711
  error_exit('Could not reach WF Manager.')
657
712
 
658
- if resp.status_code != requests.codes.created: #noqa: member does exist
713
+ if resp.status_code != requests.codes.created: # pylint: disable=E1101
659
714
  error_exit(f"Reexecute for {wf_name} failed. Please check the WF Manager.")
660
715
 
661
716
  wf_id = resp.json()['wf_id']
@@ -684,19 +739,18 @@ def dag(wf_id: str = typer.Argument(..., callback=match_short_id),
684
739
  # Check if the workflow is archived
685
740
  wf_status = get_wf_status(wf_id)
686
741
  if wf_status == 'Archived':
687
- copy_dag_in_archive = False
688
742
  bee_workdir = wf_utils.get_bee_workdir()
689
743
  mount_dir = os.path.join(bee_workdir, 'gdb_mount')
690
744
  graphmls_dir = mount_dir + '/graphmls'
691
745
  typer.secho("Workflow has been archived. All new DAGs will look the same as the one "
692
746
  "in the archive directory.",
693
747
  fg=typer.colors.MAGENTA)
748
+ wf_utils.export_dag(wf_id, output_dir, graphmls_dir, no_dag_dir)
694
749
  else:
695
- copy_dag_in_archive = True
696
750
  wf_dir = wf_utils.get_workflow_dir(wf_id)
697
751
  graphmls_dir = wf_dir + '/graphmls'
698
752
  os.makedirs(graphmls_dir, exist_ok=True)
699
- wf_utils.export_dag(wf_id, output_dir, graphmls_dir, no_dag_dir, copy_dag_in_archive)
753
+ wf_utils.export_dag(wf_id, output_dir, graphmls_dir, no_dag_dir, wf_dir)
700
754
  typer.secho(f"DAG for workflow {_short_id(wf_id)} has been exported successfully.",
701
755
  fg=typer.colors.GREEN)
702
756
 
@@ -720,8 +774,3 @@ def main():
720
774
 
721
775
  if __name__ == "__main__":
722
776
  app()
723
-
724
- # Ignore W0511: This allows us to have TODOs in the code
725
- # Ignore R1732: Significant code restructuring required to fix
726
- # Ignore R1714: Not using a set instead
727
- # 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,18 +18,18 @@ 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
26
24
 
27
25
 
28
- from beeflow.client import bee_client
26
+ from beeflow.client import bee_client # pylint: disable=R0401 #WIP
29
27
  from beeflow.common.config_driver import BeeConfig as bc
30
28
  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
@@ -52,11 +51,7 @@ class ComponentManager:
52
51
  """Return a decorator function to be called."""
53
52
 
54
53
  def wrap(fn):
55
- """Check to see if any components are disabled."""
56
- if bc.get('DEFAULT', 'remote_api') is False and 'remote_api' in name:
57
- return
58
-
59
- # Add the component to the list.
54
+ """Add the component to the list."""
60
55
  self.components[name] = {
61
56
  'fn': fn,
62
57
  'deps': deps,
@@ -112,7 +107,7 @@ class ComponentManager:
112
107
  """Poll each process to check for errors, restart failed processes."""
113
108
  # Max number of times a component can be restarted
114
109
  max_restarts = bc.get('DEFAULT', 'max_restarts')
115
- for name in self.procs: # noqa no need to iterate with items() since self.procs may be set
110
+ for name in self.procs: # pylint: disable=C0206 # no need to iterate with items() since self.procs may be set
116
111
  component = self.components[name]
117
112
  if component['failed']:
118
113
  continue
@@ -168,23 +163,7 @@ def need_slurmrestd():
168
163
  and not bc.get('slurm', 'use_commands'))
169
164
 
170
165
 
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
- def init_components():
166
+ def init_components(remote=False):
188
167
  """Initialize the components and component manager."""
189
168
  mgr = ComponentManager()
190
169
 
@@ -217,12 +196,13 @@ def init_components():
217
196
  return launch_with_gunicorn('beeflow.scheduler.scheduler:create_app()',
218
197
  paths.sched_socket(), stdout=fp, stderr=fp)
219
198
 
220
- @mgr.component('remote_api', ('wf_manager', 'task_manager'))
221
- def start_remote_api():
222
- """Start the remote API."""
223
- fp = open_log('remote_api')
224
- return launch_with_gunicorn('beeflow.remote.remote:create_app()',
225
- paths.remote_socket(), stdout=fp, stderr=fp)
199
+ if remote:
200
+ @mgr.component('remote_api', ('wf_manager', 'task_manager'))
201
+ def start_remote_api():
202
+ """Start the remote API."""
203
+ fp = open_log('remote_api')
204
+ return launch_with_gunicorn('beeflow.remote.remote:create_app()',
205
+ paths.remote_socket(), stdout=fp, stderr=fp)
226
206
 
227
207
  @mgr.component('celery', ('redis',))
228
208
  def celery():
@@ -265,16 +245,14 @@ def init_components():
265
245
  """Start BEESlurmRestD. Returns a Popen process object."""
266
246
  bee_workdir = bc.get('DEFAULT', 'bee_workdir')
267
247
  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()
248
+ openapi_version = worker_utils.get_slurmrestd_version()
249
+ print(f"Inferred slurmrestd version: {openapi_version}")
272
250
  slurm_args = f'-s openapi/{openapi_version}'
273
251
  # The following adds the db plugin we opted not to use for now
274
252
  # slurm_args = f'-s openapi/{openapi_version},openapi/db{openapi_version}'
275
253
  slurm_socket = paths.slurm_socket()
276
254
  subprocess.run(['rm', '-f', slurm_socket], check=True)
277
- fp = open(slurmrestd_log, 'w', encoding='utf-8') # noqa
255
+ fp = open(slurmrestd_log, 'w', encoding='utf-8') # pylint: disable=R1732
278
256
  cmd = ['slurmrestd']
279
257
  cmd.extend(slurm_args.split())
280
258
  cmd.append(f'unix:{slurm_socket}')
@@ -296,7 +274,7 @@ def load_check_charliecloud():
296
274
  if not shutil.which('ch-run'):
297
275
  lmod = os.environ.get('MODULESHOME')
298
276
  sys.path.insert(0, lmod + '/init')
299
- from env_modules_python import module #noqa No need to import at top
277
+ from env_modules_python import module # pylint: disable=C0415 # No need to import at top
300
278
  module("load", "charliecloud")
301
279
  # Try loading the Charliecloud module then test again
302
280
  if not shutil.which('ch-run'):
@@ -325,18 +303,29 @@ def load_check_charliecloud():
325
303
 
326
304
  def check_dependencies(backend=False):
327
305
  """Check for various dependencies in the environment."""
328
- # Check if running on compute node under Slurm scheduler
306
+ # Note: Code block of lines 309-320 is for SLURM scheduler!
307
+ # Check if running on compute node under Slurm scheduler and --backend not specified
329
308
  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.')
309
+ warn('Slurm job node detected! Beeflow should not be run on a compute node. ')
331
310
  warn(f'SLURM_JOB_NODELIST = {os.environ.get("SLURM_JOB_NODELIST")}')
311
+ bee_client.reset_client_db()
332
312
  sys.exit(1)
313
+ # Check if running on front end with --backend flag specified
314
+ if backend and os.environ.get('SLURM_JOB_NODELIST') is None:
315
+ warn('Slurm node was not detected! Are you sure you are on a compute node? ')
316
+ warn("Please run 'beeflow core start' again without the --backend flag.")
317
+ bee_client.reset_client_db()
318
+ sys.exit(1)
319
+
320
+ # TO DO: Add checks when using Flux scheduler
321
+
333
322
  print('Checking dependencies...')
334
323
  # Check for Charliecloud and its version
335
324
  load_check_charliecloud()
336
325
  # Check for the flux API
337
326
  if bc.get('DEFAULT', 'workload_scheduler') == 'Flux':
338
327
  try:
339
- import flux # noqa needed to check whether flux api is actually installed
328
+ import flux # pylint: disable=W0611,C0415 # don't need to check whether flux api is actually installed
340
329
  except ModuleNotFoundError:
341
330
  warn('Failed to import flux Python API. Please make sure you can '
342
331
  'use flux in your environment.')
@@ -390,7 +379,7 @@ class Beeflow:
390
379
 
391
380
  def daemonize(mgr, base_components):
392
381
  """Start beeflow as a daemon, monitoring all processes."""
393
- def handle_terminate(signum, stack): # noqa
382
+ def handle_terminate(signum, stack): # pylint: disable=W0613
394
383
  """Handle a terminate signal."""
395
384
  # Kill all subprocesses
396
385
  mgr.kill()
@@ -413,19 +402,27 @@ app = typer.Typer(no_args_is_help=True)
413
402
  @app.command()
414
403
  def start(foreground: bool = typer.Option(False, '--foreground', '-F',
415
404
  help='run in the foreground'), backend: bool = typer.Option(False, '--backend',
416
- '-B', help='allow to run on a backend node')):
405
+ '-B', help='allow to run on a backend node'), remote: bool = typer.Option(False,
406
+ '--remote', '-R', help='allow remote connection')):
417
407
  """Start all BEE components."""
418
408
  start_hn = socket.gethostname() # hostname when beeflow starts
419
- if bee_client.get_hostname() == "":
409
+ if bee_client.get_hostname() == "" and bee_client.check_backend_status() == "":
420
410
  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)
411
+ else:
412
+ time.sleep(10) # giving Slurm time to relinquish compute node, if necessary
413
+ bee_client.check_db_flags(start_hn)
414
+
424
415
  if backend: # allow beeflow to run on backend node
425
416
  check_dependencies(backend=True)
417
+ bee_client.set_backend_status("true") # add flag to db
426
418
  else:
427
419
  check_dependencies()
428
- mgr = init_components()
420
+
421
+ if remote: # turn on REST API for remote connection
422
+ mgr = init_components(remote=True)
423
+ else:
424
+ mgr = init_components()
425
+
429
426
  beeflow_log = paths.log_fname('beeflow')
430
427
  sock_path = paths.beeflow_socket()
431
428
  if bc.get('DEFAULT', 'workload_scheduler') == 'Slurm' and not need_slurmrestd():
@@ -470,9 +467,10 @@ def start(foreground: bool = typer.Option(False, '--foreground', '-F',
470
467
  def status():
471
468
  """Check the status of beeflow and the components."""
472
469
  status_hn = socket.gethostname() # hostname when beeflow core status returned
470
+ bee_client.check_hostname(status_hn)
473
471
  resp = cli_connection.send(paths.beeflow_socket(), {'type': 'status'})
474
472
  if resp is None:
475
- bee_client.check_hostname(status_hn)
473
+ # bee_client.check_hostname(status_hn) # need to remove since checked in line 465?
476
474
  sys.exit(1)
477
475
  print('beeflow components:')
478
476
  for comp, stat in resp['components'].items():
@@ -492,6 +490,7 @@ def info():
492
490
  def stop(query='yes'):
493
491
  """Stop the current running beeflow daemon."""
494
492
  stop_hn = socket.gethostname() # hostname when beeflow core stop returned
493
+ bee_client.check_hostname(stop_hn)
495
494
  # Check workflow states; warn if there are active states, pause running workflows
496
495
  workflow_list = bee_client.get_wf_list()
497
496
  concern_states = {'Running', 'Initializing', 'Waiting'}
@@ -514,13 +513,13 @@ def stop(query='yes'):
514
513
  bee_client.pause(wf_id)
515
514
  resp = cli_connection.send(paths.beeflow_socket(), {'type': 'quit'})
516
515
  if resp is None:
517
- bee_client.check_hostname(stop_hn)
516
+ # bee_client.check_hostname(stop_hn) # need to remove since checked in line 487?
518
517
  sys.exit(1)
519
518
  # As long as it returned something, we should be good
520
519
  beeflow_log = paths.log_fname('beeflow')
521
520
  if query == "yes":
522
521
  print(f'Beeflow has stopped. Check the log at "{beeflow_log}".')
523
- bee_client.setup_hostname("")
522
+ bee_client.reset_client_db()
524
523
 
525
524
 
526
525
  def archive_dir(dir_to_archive):
@@ -579,6 +578,7 @@ def reset(archive: bool = typer.Option(False, '--archive', '-a',
579
578
  Shutdown beeflow and all BEE components.
580
579
  Delete the bee_workdir directory which results in:
581
580
  Removing the archive of all workflows.
581
+ (unless archives is configured elsewhere).
582
582
  Removing the archive of workflow containers
583
583
  (unless container_archive is configured elsewhere).
584
584
  Reset all databases associated with the beeflow app.