hpc-beeflow 0.1.10.dev1__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 (337) hide show
  1. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/PKG-INFO +5 -4
  2. hpc_beeflow-0.1.11.dev0/beeflow/__init__.py +1 -0
  3. hpc_beeflow-0.1.11.dev0/beeflow/client/__init__.py +1 -0
  4. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/client/bee_client.py +19 -14
  5. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/client/core.py +23 -20
  6. hpc_beeflow-0.1.11.dev0/beeflow/client/remote_client.py +178 -0
  7. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/cloud_launcher.py +5 -3
  8. hpc_beeflow-0.1.11.dev0/beeflow/common/__init__.py +1 -0
  9. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/api.py +1 -1
  10. hpc_beeflow-0.1.11.dev0/beeflow/common/build/__init__.py +1 -0
  11. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/build/container_drivers.py +7 -5
  12. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/build_interfaces.py +3 -5
  13. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cli.py +1 -1
  14. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/__init__.py +4 -2
  15. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/chameleoncloud.py +1 -1
  16. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/google.py +2 -2
  17. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/config_driver.py +12 -10
  18. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/config_utils.py +1 -1
  19. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/connection.py +1 -1
  20. hpc_beeflow-0.1.11.dev0/beeflow/common/crt/__init__.py +1 -0
  21. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/crt/charliecloud_driver.py +2 -2
  22. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/crt_interface.py +3 -2
  23. hpc_beeflow-0.1.11.dev0/beeflow/common/cwl/__init__.py +1 -0
  24. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cwl/cwl.py +10 -7
  25. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cwl/examples/README.txt +1 -1
  26. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cwl/examples/comd.py +12 -7
  27. hpc_beeflow-0.1.11.dev0/beeflow/common/cwl/examples/comd_pre.sh +2 -0
  28. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cwl/workflow.py +24 -11
  29. hpc_beeflow-0.1.11.dev0/beeflow/common/db/__init__.py +1 -0
  30. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/db/client_db.py +1 -1
  31. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/db/tm_db.py +2 -2
  32. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/db/wfm_db.py +7 -3
  33. hpc_beeflow-0.1.11.dev0/beeflow/common/deps/__init__.py +1 -0
  34. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/deps/container_manager.py +1 -1
  35. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/deps/neo4j_manager.py +1 -1
  36. hpc_beeflow-0.1.11.dev0/beeflow/common/gdb/__init__.py +1 -0
  37. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/gdb/gdb_driver.py +8 -1
  38. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/gdb/generate_graph.py +2 -5
  39. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/gdb/neo4j_cypher.py +39 -4
  40. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/gdb/neo4j_driver.py +39 -6
  41. hpc_beeflow-0.1.11.dev0/beeflow/common/integration/__init__.py +1 -0
  42. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/integration/utils.py +6 -0
  43. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/integration_test.py +30 -5
  44. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/parser/__init__.py +1 -1
  45. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/parser/parser.py +3 -3
  46. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/validation.py +6 -4
  47. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/wf_data.py +1 -4
  48. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/wf_interface.py +7 -0
  49. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/__init__.py +1 -1
  50. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/flux_worker.py +10 -8
  51. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/lsf_worker.py +1 -10
  52. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/slurm_worker.py +100 -94
  53. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/worker.py +31 -6
  54. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker_interface.py +3 -2
  55. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/README.txt +3 -0
  56. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/cat.cwl +17 -0
  57. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/cat2.cwl +17 -0
  58. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/grep0.cwl +18 -0
  59. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/grep1.cwl +18 -0
  60. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/grep2.cwl +18 -0
  61. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/grep3.cwl +18 -0
  62. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/input.yml +8 -0
  63. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/lorem.txt +49 -0
  64. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/tar.cwl +24 -0
  65. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/tar2.cwl +24 -0
  66. hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/cgt-2branches/workflow.cwl +78 -0
  67. {hpc_beeflow-0.1.10.dev1/beeflow/data/dockerfiles/pennant-graph → hpc_beeflow-0.1.11.dev0/beeflow/data/cwl/bee_workflows/pennant-build}/graph_pennant.py +4 -3
  68. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree.py +4 -2
  69. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/linear_regression.py +4 -2
  70. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/predict_code.py +4 -2
  71. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/read_dataset.py +4 -2
  72. {hpc_beeflow-0.1.10.dev1/beeflow/data/cwl/bee_workflows/pennant-build → hpc_beeflow-0.1.11.dev0/beeflow/data/dockerfiles/pennant-graph}/graph_pennant.py +4 -3
  73. hpc_beeflow-0.1.11.dev0/beeflow/remote/__init__.py +1 -0
  74. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/remote/remote.py +1 -2
  75. hpc_beeflow-0.1.11.dev0/beeflow/scheduler/__init__.py +1 -0
  76. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/algorithms.py +4 -4
  77. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/resource_allocation.py +4 -3
  78. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/scheduler.py +7 -7
  79. hpc_beeflow-0.1.11.dev0/beeflow/task_manager/__init__.py +1 -0
  80. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/task_manager/background.py +17 -7
  81. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/task_manager/task_actions.py +1 -1
  82. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/mocks.py +35 -35
  83. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_config_validator.py +5 -5
  84. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_db_client.py +5 -3
  85. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_db_sched.py +5 -3
  86. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_db_tm.py +5 -3
  87. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_neo4j_cypher.py +24 -0
  88. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_parser.py +16 -16
  89. hpc_beeflow-0.1.11.dev0/beeflow/tests/test_remote.py +112 -0
  90. hpc_beeflow-0.1.11.dev0/beeflow/tests/test_remote_client.py +275 -0
  91. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_scheduler_resource_allocation.py +4 -2
  92. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_scheduler_rest.py +5 -5
  93. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_slurm_worker.py +22 -9
  94. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_tm.py +3 -3
  95. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_wf_interface.py +3 -3
  96. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_wf_manager.py +2 -1
  97. hpc_beeflow-0.1.11.dev0/beeflow/tests/test_wf_update.py +139 -0
  98. hpc_beeflow-0.1.11.dev0/beeflow/wf_manager/__init__.py +1 -0
  99. hpc_beeflow-0.1.11.dev0/beeflow/wf_manager/resources/__init__.py +1 -0
  100. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/wf_manager/resources/wf_actions.py +4 -0
  101. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/wf_manager/resources/wf_list.py +1 -1
  102. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/wf_manager/resources/wf_update.py +30 -23
  103. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/wf_manager/resources/wf_utils.py +40 -13
  104. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/wf_manager/wf_manager.py +2 -6
  105. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/pyproject.toml +6 -8
  106. hpc_beeflow-0.1.10.dev1/beeflow/wf_manager/common/wf_db.py +0 -342
  107. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/LICENSE +0 -0
  108. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/README.rst +0 -0
  109. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/client/README.md +0 -0
  110. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/README.md +0 -0
  111. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/build/README.md +0 -0
  112. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/build/build_driver.py +0 -0
  113. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/build/utils.py +0 -0
  114. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cli_connection.py +0 -0
  115. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/README.md +0 -0
  116. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/cloud.py +0 -0
  117. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/constants.py +0 -0
  118. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/openstack.py +0 -0
  119. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cloud/provider.py +0 -0
  120. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/config_validator.py +0 -0
  121. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/container_path.py +0 -0
  122. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/crt/crt_driver.py +0 -0
  123. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/crt/singularity_driver.py +0 -0
  124. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cwl/examples/Dockerfile.comd-x86_64 +0 -0
  125. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cwl/examples/cat_grep_tar.py +0 -0
  126. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cwl/examples/comd_driver.py +0 -0
  127. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/cwl/examples/lorem.txt +0 -0
  128. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/db/bdb.py +0 -0
  129. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/db/sched_db.py +0 -0
  130. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/deps/celery_manager.py +0 -0
  131. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/deps/redis_manager.py +0 -0
  132. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/expr.py +0 -0
  133. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/gdb/DESIGN.md +0 -0
  134. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/gdb/graphml_key_updater.py +0 -0
  135. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/integration/generated_workflows.py +0 -0
  136. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/log.py +0 -0
  137. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/parser/.gitignore +0 -0
  138. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/parser/README.md +0 -0
  139. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/paths.py +0 -0
  140. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/states.py +0 -0
  141. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/tab_completion.py +0 -0
  142. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/wf_profiler.py +0 -0
  143. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/README.md +0 -0
  144. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/simple_worker.py +0 -0
  145. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/common/worker/utils.py +0 -0
  146. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cloud_templates/dora.jinja +0 -0
  147. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cloud_templates/dora.yaml +0 -0
  148. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/README.md +0 -0
  149. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/README.md +0 -0
  150. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/README.md +0 -0
  151. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast.yml +0 -0
  152. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast_output.cwl +0 -0
  153. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast_output_err.cwl +0 -0
  154. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast_split.cwl +0 -0
  155. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast_wf.cwl +0 -0
  156. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast_worker001.cwl +0 -0
  157. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/blast_worker002.cwl +0 -0
  158. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/blast/input/small.fasta +0 -0
  159. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/README.md +0 -0
  160. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/cat.cwl +0 -0
  161. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep0.cwl +0 -0
  162. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep1.cwl +0 -0
  163. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/input.yml +0 -0
  164. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/lorem.txt +0 -0
  165. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/tar.cwl +0 -0
  166. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/cat-grep-fail/workflow.cwl +0 -0
  167. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ci/README.md +0 -0
  168. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr.cwl +0 -0
  169. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.json +0 -0
  170. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.yml +0 -0
  171. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_wf.cwl +0 -0
  172. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ci/ffmpeg.cwl +0 -0
  173. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/Dockerfile.clamr-ffmpeg +0 -0
  174. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/README.md +0 -0
  175. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr.cwl +0 -0
  176. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_job.json +0 -0
  177. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_job.yml +0 -0
  178. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_wf.cwl +0 -0
  179. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/ffmpeg.cwl +0 -0
  180. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/post_run.sh +0 -0
  181. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/pre_run.sh +0 -0
  182. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/Dockerfile.clamr-ffmpeg +0 -0
  183. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/README.md +0 -0
  184. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr.cwl +0 -0
  185. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_job.json +0 -0
  186. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_job.yml +0 -0
  187. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_wf.cwl +0 -0
  188. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/ffmpeg.cwl +0 -0
  189. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/post_run.sh +0 -0
  190. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/pre_run.sh +0 -0
  191. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf/README.md +0 -0
  192. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr.cwl +0 -0
  193. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.json +0 -0
  194. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.yml +0 -0
  195. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_wf.cwl +0 -0
  196. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf/ffmpeg.cwl +0 -0
  197. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/README.md +0 -0
  198. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr.cwl +0 -0
  199. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_job.json +0 -0
  200. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_job.yml +0 -0
  201. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_wf.cwl +0 -0
  202. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/ffmpeg.cwl +0 -0
  203. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/README.md +0 -0
  204. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/lsf-charliecloud/README.md +0 -0
  205. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/lsf-charliecloud/cf-summit.cwl +0 -0
  206. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/Dockerfile.clamr-lanl-x86_64 +0 -0
  207. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/README.md +0 -0
  208. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf-darwin.cwl +0 -0
  209. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf-no-owrite.cwl +0 -0
  210. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf.cwl +0 -0
  211. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/copyContainer_containerName.cwl +0 -0
  212. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/dockerFile_containerName.cwl +0 -0
  213. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/dockerPull.cwl +0 -0
  214. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-singularity/README.md +0 -0
  215. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-singularity/cf-singularity.cwl +0 -0
  216. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/README.md +0 -0
  217. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr.cwl +0 -0
  218. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_job.json +0 -0
  219. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_job.yml +0 -0
  220. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_wf.cwl +0 -0
  221. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/ffmpeg.cwl +0 -0
  222. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/README.md +0 -0
  223. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr.cwl +0 -0
  224. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_job.json +0 -0
  225. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_job.yml +0 -0
  226. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_wf.cwl +0 -0
  227. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/ffmpeg.cwl +0 -0
  228. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/README.md +0 -0
  229. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr.cwl +0 -0
  230. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_job.json +0 -0
  231. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_job.yml +0 -0
  232. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_wf.cwl +0 -0
  233. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/ffmpeg.cwl +0 -0
  234. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.cwl +0 -0
  235. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.yml +0 -0
  236. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh.cwl +0 -0
  237. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh_job.yml +0 -0
  238. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh_wf.cwl +0 -0
  239. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/nwchem-mpi/README.md +0 -0
  240. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.cwl +0 -0
  241. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.yml +0 -0
  242. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem_bin.cwl +0 -0
  243. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant/graph.cwl +0 -0
  244. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant/pennant.yml +0 -0
  245. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant/pennant_1_node.cwl +0 -0
  246. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant/pennant_2_node.cwl +0 -0
  247. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant/pennant_4_node.cwl +0 -0
  248. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant/pennant_wf.cwl +0 -0
  249. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/Dockerfile.pennant-flux-x86_64 +0 -0
  250. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/Dockerfile.pennant-graph-x86_64 +0 -0
  251. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/graph.cwl +0 -0
  252. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.sh +0 -0
  253. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/pennant.yml +0 -0
  254. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_1_node.cwl +0 -0
  255. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_2_node.cwl +0 -0
  256. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_4_node.cwl +0 -0
  257. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_8_node.cwl +0 -0
  258. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_wf.cwl +0 -0
  259. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/pytest.ini +0 -0
  260. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/simple-workflows/README.md +0 -0
  261. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/simple-workflows/cancel.cwl +0 -0
  262. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/README.md +0 -0
  263. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/gc-nc.cwl +0 -0
  264. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/gc.cwl +0 -0
  265. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/lorem.txt +0 -0
  266. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/README.md +0 -0
  267. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/builder/dockerFile.cwl +0 -0
  268. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/builder/dockerPull.cwl +0 -0
  269. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/grep-wordcount/gc.cwl +0 -0
  270. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/grep-wordcount/lorem.txt +0 -0
  271. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/helloworld.cwl +0 -0
  272. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/helloworld_input.yaml +0 -0
  273. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/DAG_example-1.png +0 -0
  274. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/README.md +0 -0
  275. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add.cwl +0 -0
  276. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add_multiply_example_workflow.cwl +0 -0
  277. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add_step1.py +0 -0
  278. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/isolated test.cwl +0 -0
  279. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/job.yaml +0 -0
  280. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/multiply.cwl +0 -0
  281. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/multiply_step2.py +0 -0
  282. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/workflow_generater_python.py +0 -0
  283. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/README.md +0 -0
  284. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree_output.txt +0 -0
  285. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree_tool.cwl +0 -0
  286. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/expectedValue.txt +0 -0
  287. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/hiring1.txt +0 -0
  288. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/linear_regress_output.txt +0 -0
  289. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/machinelearning_pipeline.cwl +0 -0
  290. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/out.PNG +0 -0
  291. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/predict_tool.cwl +0 -0
  292. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/read_dataset_tool.cwl +0 -0
  293. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/regress_tool.cwl +0 -0
  294. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.builder_demo +0 -0
  295. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.clamr-ffmpeg +0 -0
  296. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.clamr-lanl-x86_64 +0 -0
  297. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.clamr-ppc64le +0 -0
  298. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.comd-flux-x86_64 +0 -0
  299. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.deb9ompi-x86_64 +0 -0
  300. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.lulesh-x86_64 +0 -0
  301. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.neo4j +0 -0
  302. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.nwchem-x86_64 +0 -0
  303. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.pennant-flux-x86_64 +0 -0
  304. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/Dockerfile.vaspompi-x86_64 +0 -0
  305. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/README.md +0 -0
  306. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.comd-x86_64-wpmix +0 -0
  307. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.debian +0 -0
  308. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.openmpi-3.1.5 +0 -0
  309. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/comd-pmix-support/README.md +0 -0
  310. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/comd-pmix-support/dont-init-ucx-on-intel-cray.patch +0 -0
  311. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/pennant-graph/Dockerfile.pennant-graph-x86_64 +0 -0
  312. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.sh +0 -0
  313. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/README.md +0 -0
  314. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/scheduler.yaml +0 -0
  315. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/serializable.py +0 -0
  316. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/scheduler/task.py +0 -0
  317. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/task_manager/task_manager.py +0 -0
  318. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/task_manager/task_submit.py +0 -0
  319. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/task_manager/utils.py +0 -0
  320. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/42.tgz +0 -0
  321. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/README.md +0 -0
  322. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/cf.cwl +0 -0
  323. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/clamr.cwl +0 -0
  324. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/clamr_job.json +0 -0
  325. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/clamr_job.yml +0 -0
  326. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/clamr_wf.cwl +0 -0
  327. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/ffmpeg.cwl +0 -0
  328. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/mv_script.cwl +0 -0
  329. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf/mv_script.sh +0 -0
  330. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/clamr-wf.tgz +0 -0
  331. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/gdb.py +0 -0
  332. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_charliecloud_driver.py +0 -0
  333. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_cloud.py +0 -0
  334. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_config_driver.py +0 -0
  335. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_config_utils.py +0 -0
  336. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_container_path.py +0 -0
  337. {hpc_beeflow-0.1.10.dev1 → hpc_beeflow-0.1.11.dev0}/beeflow/tests/test_scheduler.py +0 -0
@@ -1,8 +1,7 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: hpc-beeflow
3
- Version: 0.1.10.dev1
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
@@ -35,7 +34,7 @@ Requires-Dist: celery[redis,sqlalchemy] (>=5.3.4,<6.0.0)
35
34
  Requires-Dist: cffi (>=1.15.1,<2.0.0)
36
35
  Requires-Dist: cwl-utils (>=0.16,<0.17)
37
36
  Requires-Dist: docutils (==0.18.1)
38
- Requires-Dist: fastapi (==0.109.2)
37
+ Requires-Dist: fastapi (==0.115.8)
39
38
  Requires-Dist: flask_restful (==0.3.9)
40
39
  Requires-Dist: google-api-python-client (>=2.66.0,<3.0.0) ; extra == "cloud-extras"
41
40
  Requires-Dist: graphviz (>=0.20.3,<0.21.0)
@@ -43,6 +42,8 @@ Requires-Dist: gunicorn (>=20.1,<23.0)
43
42
  Requires-Dist: jsonpickle (>=2.2.0,<3.0.0)
44
43
  Requires-Dist: neo4j (>=5,<6)
45
44
  Requires-Dist: networkx (==3.1)
45
+ Requires-Dist: pre-commit (==3.5.0)
46
+ Requires-Dist: pylint (==3.2.7)
46
47
  Requires-Dist: python-daemon (>=2.3.1,<3.0.0)
47
48
  Requires-Dist: python-heatclient (>=3.1.0,<4.0.0) ; extra == "cloud-extras"
48
49
  Requires-Dist: python-openstackclient (>=6.0.0,<7.0.0) ; extra == "cloud-extras"
@@ -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
@@ -28,13 +33,14 @@ from beeflow.common.connection import Connection
28
33
  from beeflow.common import paths
29
34
  from beeflow.common.parser import CwlParser
30
35
  from beeflow.common.wf_data import generate_workflow_id
31
- from beeflow.client import core
36
+ from beeflow.client import core # pylint: disable=R0401 #WIP
37
+ from beeflow.client import remote_client
32
38
  from beeflow.wf_manager.resources import wf_utils
33
39
  from beeflow.common.db import client_db
34
40
  from beeflow.common.db import bdb
35
41
 
36
42
  # Length of a shortened workflow ID
37
- short_id_len = 6 #noqa: Not a constant
43
+ short_id_len = 6 # pylint: disable=C0103 # not a constant
38
44
 
39
45
  # Maximum length of a workflow ID
40
46
  MAX_ID_LEN = 32
@@ -167,7 +173,7 @@ def error_exit(msg, include_caller=True):
167
173
  raise ClientError(msg) from None
168
174
 
169
175
 
170
- 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
171
177
  """Handle a 500 error in a response."""
172
178
  if resp.status_code != 500:
173
179
  return resp
@@ -231,7 +237,7 @@ def get_wf_list():
231
237
 
232
238
  def check_short_id_collision():
233
239
  """Check short workflow IDs for colliions; increase short ID length if detected."""
234
- global short_id_len #noqa: Not a constant
240
+ global short_id_len
235
241
  workflow_list = get_wf_list()
236
242
  if workflow_list:
237
243
  while short_id_len < MAX_ID_LEN:
@@ -291,6 +297,7 @@ def get_wf_status(wf_id):
291
297
 
292
298
  app = typer.Typer(no_args_is_help=True, add_completion=False, cls=NaturalOrderGroup)
293
299
  app.add_typer(core.app, name='core')
300
+ app.add_typer(remote_client.app, name='remote')
294
301
  app.add_typer(config_driver.app, name='config')
295
302
 
296
303
 
@@ -318,6 +325,8 @@ def submit(wf_name: str = typer.Argument(..., help='the workflow name'), # pyli
318
325
  workdir = workdir.resolve()
319
326
 
320
327
  tarball_path = ""
328
+ workflow = None
329
+ wf_tarball = None
321
330
  if os.path.exists(wf_path):
322
331
  # Check to see if the wf_path is a tarball or a directory. Package if directory
323
332
  if os.path.isdir(wf_path):
@@ -470,13 +479,13 @@ def package(wf_path: pathlib.Path = typer.Argument(...,
470
479
  # Just use tar with subprocess. Python's tar library is not performant.
471
480
  return_code = subprocess.run(['tar', '-C', parent_dir, '-czf', tarball, wf_dir],
472
481
  check=True).returncode
473
- package_path = package_dest.resolve()/tarball # noqa: Not an arithmetic operation
482
+ package_path = package_dest.resolve()/tarball
474
483
 
475
484
  # Get the curent working directory
476
485
  cwd = pathlib.Path().absolute()
477
486
  if package_dest != cwd:
478
487
  # Move the tarball if the directory it's wanted in is not in the current working directory
479
- tarball_path = cwd/tarball # noqa: Not an arithmetic operation
488
+ tarball_path = cwd/tarball
480
489
  shutil.move(tarball_path, package_path)
481
490
 
482
491
  if return_code != 0:
@@ -657,6 +666,7 @@ def reexecute(wf_name: str = typer.Argument(..., help='The workflow name'),
657
666
  help='working directory for workflow containing input + output files')
658
667
  ):
659
668
  """Reexecute an archived workflow."""
669
+ wf_tarball = None
660
670
  if os.path.exists(wf_path):
661
671
  wf_tarball = open(wf_path, 'rb')
662
672
  else:
@@ -700,7 +710,7 @@ def reexecute(wf_name: str = typer.Argument(..., help='The workflow name'),
700
710
  except requests.exceptions.ConnectionError:
701
711
  error_exit('Could not reach WF Manager.')
702
712
 
703
- if resp.status_code != requests.codes.created: #noqa: member does exist
713
+ if resp.status_code != requests.codes.created: # pylint: disable=E1101
704
714
  error_exit(f"Reexecute for {wf_name} failed. Please check the WF Manager.")
705
715
 
706
716
  wf_id = resp.json()['wf_id']
@@ -729,19 +739,18 @@ def dag(wf_id: str = typer.Argument(..., callback=match_short_id),
729
739
  # Check if the workflow is archived
730
740
  wf_status = get_wf_status(wf_id)
731
741
  if wf_status == 'Archived':
732
- copy_dag_in_archive = False
733
742
  bee_workdir = wf_utils.get_bee_workdir()
734
743
  mount_dir = os.path.join(bee_workdir, 'gdb_mount')
735
744
  graphmls_dir = mount_dir + '/graphmls'
736
745
  typer.secho("Workflow has been archived. All new DAGs will look the same as the one "
737
746
  "in the archive directory.",
738
747
  fg=typer.colors.MAGENTA)
748
+ wf_utils.export_dag(wf_id, output_dir, graphmls_dir, no_dag_dir)
739
749
  else:
740
- copy_dag_in_archive = True
741
750
  wf_dir = wf_utils.get_workflow_dir(wf_id)
742
751
  graphmls_dir = wf_dir + '/graphmls'
743
752
  os.makedirs(graphmls_dir, exist_ok=True)
744
- 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)
745
754
  typer.secho(f"DAG for workflow {_short_id(wf_id)} has been exported successfully.",
746
755
  fg=typer.colors.GREEN)
747
756
 
@@ -765,7 +774,3 @@ def main():
765
774
 
766
775
  if __name__ == "__main__":
767
776
  app()
768
-
769
- # Ignore W0511: This allows us to have TODOs in the code
770
- # Ignore R1732: Significant code restructuring required to fix
771
- # pylama:ignore=W0511,R1732
@@ -23,7 +23,7 @@ import daemon
23
23
  import typer
24
24
 
25
25
 
26
- from beeflow.client import bee_client
26
+ from beeflow.client import bee_client # pylint: disable=R0401 #WIP
27
27
  from beeflow.common.config_driver import BeeConfig as bc
28
28
  from beeflow.common.config_driver import AlterConfig
29
29
  from beeflow.common import cli_connection
@@ -51,11 +51,7 @@ class ComponentManager:
51
51
  """Return a decorator function to be called."""
52
52
 
53
53
  def wrap(fn):
54
- """Check to see if any components are disabled."""
55
- if bc.get('DEFAULT', 'remote_api') is False and 'remote_api' in name:
56
- return
57
-
58
- # Add the component to the list.
54
+ """Add the component to the list."""
59
55
  self.components[name] = {
60
56
  'fn': fn,
61
57
  'deps': deps,
@@ -111,7 +107,7 @@ class ComponentManager:
111
107
  """Poll each process to check for errors, restart failed processes."""
112
108
  # Max number of times a component can be restarted
113
109
  max_restarts = bc.get('DEFAULT', 'max_restarts')
114
- 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
115
111
  component = self.components[name]
116
112
  if component['failed']:
117
113
  continue
@@ -167,7 +163,7 @@ def need_slurmrestd():
167
163
  and not bc.get('slurm', 'use_commands'))
168
164
 
169
165
 
170
- def init_components():
166
+ def init_components(remote=False):
171
167
  """Initialize the components and component manager."""
172
168
  mgr = ComponentManager()
173
169
 
@@ -200,12 +196,13 @@ def init_components():
200
196
  return launch_with_gunicorn('beeflow.scheduler.scheduler:create_app()',
201
197
  paths.sched_socket(), stdout=fp, stderr=fp)
202
198
 
203
- @mgr.component('remote_api', ('wf_manager', 'task_manager'))
204
- def start_remote_api():
205
- """Start the remote API."""
206
- fp = open_log('remote_api')
207
- return launch_with_gunicorn('beeflow.remote.remote:create_app()',
208
- 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)
209
206
 
210
207
  @mgr.component('celery', ('redis',))
211
208
  def celery():
@@ -255,7 +252,7 @@ def init_components():
255
252
  # slurm_args = f'-s openapi/{openapi_version},openapi/db{openapi_version}'
256
253
  slurm_socket = paths.slurm_socket()
257
254
  subprocess.run(['rm', '-f', slurm_socket], check=True)
258
- fp = open(slurmrestd_log, 'w', encoding='utf-8') # noqa
255
+ fp = open(slurmrestd_log, 'w', encoding='utf-8') # pylint: disable=R1732
259
256
  cmd = ['slurmrestd']
260
257
  cmd.extend(slurm_args.split())
261
258
  cmd.append(f'unix:{slurm_socket}')
@@ -277,7 +274,7 @@ def load_check_charliecloud():
277
274
  if not shutil.which('ch-run'):
278
275
  lmod = os.environ.get('MODULESHOME')
279
276
  sys.path.insert(0, lmod + '/init')
280
- 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
281
278
  module("load", "charliecloud")
282
279
  # Try loading the Charliecloud module then test again
283
280
  if not shutil.which('ch-run'):
@@ -328,7 +325,7 @@ def check_dependencies(backend=False):
328
325
  # Check for the flux API
329
326
  if bc.get('DEFAULT', 'workload_scheduler') == 'Flux':
330
327
  try:
331
- 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
332
329
  except ModuleNotFoundError:
333
330
  warn('Failed to import flux Python API. Please make sure you can '
334
331
  'use flux in your environment.')
@@ -382,7 +379,7 @@ class Beeflow:
382
379
 
383
380
  def daemonize(mgr, base_components):
384
381
  """Start beeflow as a daemon, monitoring all processes."""
385
- def handle_terminate(signum, stack): # noqa
382
+ def handle_terminate(signum, stack): # pylint: disable=W0613
386
383
  """Handle a terminate signal."""
387
384
  # Kill all subprocesses
388
385
  mgr.kill()
@@ -405,7 +402,8 @@ app = typer.Typer(no_args_is_help=True)
405
402
  @app.command()
406
403
  def start(foreground: bool = typer.Option(False, '--foreground', '-F',
407
404
  help='run in the foreground'), backend: bool = typer.Option(False, '--backend',
408
- '-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')):
409
407
  """Start all BEE components."""
410
408
  start_hn = socket.gethostname() # hostname when beeflow starts
411
409
  if bee_client.get_hostname() == "" and bee_client.check_backend_status() == "":
@@ -419,7 +417,12 @@ def start(foreground: bool = typer.Option(False, '--foreground', '-F',
419
417
  bee_client.set_backend_status("true") # add flag to db
420
418
  else:
421
419
  check_dependencies()
422
- 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
+
423
426
  beeflow_log = paths.log_fname('beeflow')
424
427
  sock_path = paths.beeflow_socket()
425
428
  if bc.get('DEFAULT', 'workload_scheduler') == 'Slurm' and not need_slurmrestd():
@@ -0,0 +1,178 @@
1
+ #!/usr/bin/env python3
2
+
3
+ """remote-client.
4
+
5
+ This script provides a client interface to the user to manage workflows remotely.
6
+ Capabilities include checking the connection to the client, getting the droppoint location,
7
+ copying files to the droppoint, and submitting the workflow to the client.
8
+ """
9
+ import subprocess
10
+ import pathlib
11
+ import sys
12
+ import json
13
+
14
+ import typer
15
+
16
+ from beeflow.common.config_driver import BeeConfig as bc
17
+
18
+
19
+ def warn(*pargs):
20
+ """Print a red warning message."""
21
+ typer.secho(' '.join(pargs), fg=typer.colors.RED, file=sys.stderr)
22
+
23
+
24
+ def remote_port_val():
25
+ """Return the value of the remote port."""
26
+ return bc.get('DEFAULT', 'remote_api_port')
27
+
28
+
29
+ app = typer.Typer(no_args_is_help=True)
30
+
31
+
32
+ @app.command()
33
+ def connection(ssh_target: str = typer.Argument(..., help='the target to ssh to')):
34
+ """Check the connection to Beeflow client via REST API."""
35
+ port = remote_port_val()
36
+ try:
37
+ result = subprocess.run(
38
+ ["curl", f"{ssh_target}:{port}/"],
39
+ stdout=subprocess.PIPE,
40
+ stderr=subprocess.PIPE,
41
+ text=True,
42
+ check=True
43
+ )
44
+ print(result.stdout)
45
+ except subprocess.CalledProcessError:
46
+ warn(f'Connection to {ssh_target}:{port} failed.')
47
+
48
+ # check if the remote API was started
49
+ check_command = 'ssh {ssh_target} "ps aux | grep $USER | grep \'gunicorn\'"'
50
+ result = subprocess.run(
51
+ check_command,
52
+ shell=True,
53
+ stdout=subprocess.PIPE,
54
+ stderr=subprocess.PIPE,
55
+ text=True,
56
+ check=False
57
+ )
58
+ lines = result.stdout.strip().splitlines()
59
+ if not any("beeflow.remote.remote:create_app" in element for element in lines):
60
+ warn(f'Remote API has not been started on {ssh_target}. '
61
+ 'Use remote flag when starting beeflow.')
62
+ sys.exit(1)
63
+
64
+
65
+ @app.command()
66
+ def droppoint(ssh_target: str = typer.Argument(..., help='the target to ssh to')):
67
+ """Request drop point location on remote machine via Beeflow client REST API."""
68
+ port = remote_port_val()
69
+ try:
70
+ result = subprocess.run(
71
+ ["curl", f"{ssh_target}:{port}/droppoint"],
72
+ stdout=subprocess.PIPE,
73
+ stderr=subprocess.PIPE,
74
+ text=True,
75
+ check=True
76
+ )
77
+
78
+ with open('droppoint.env', 'w', encoding='utf-8') as output_file:
79
+ output_file.write(result.stdout)
80
+ print("Droppoint information saved to droppoint.env")
81
+
82
+ except subprocess.CalledProcessError:
83
+ warn(f'Failed to retrieve droppoint from {ssh_target}:{port}.'
84
+ ' Check connection to beeflow.')
85
+ sys.exit(1)
86
+
87
+
88
+ @app.command()
89
+ def copy(user: str = typer.Argument(..., help='the username on the remote system'),
90
+ ssh_target: str = typer.Argument(..., help="the target to ssh to"),
91
+ file_path: pathlib.Path = typer.Argument(..., help="path to copy to droppoint")):
92
+ """Copy path to droppoint."""
93
+ if not file_path.exists():
94
+ warn(f'Error: File or directory {file_path} does not exist.')
95
+ sys.exit(1)
96
+
97
+ try:
98
+ with open("droppoint.env", "r", encoding="utf-8") as f:
99
+ config = json.load(f)
100
+ droppoint_path = config.get("droppoint", "")
101
+
102
+ if not droppoint_path:
103
+ warn('Error: Could not retrieve droppoint location.')
104
+ sys.exit(1)
105
+
106
+ print(f"Copying {str(file_path)} to {droppoint_path}")
107
+
108
+ subprocess.run(["rsync", "-a", str(file_path), f"{user}@{ssh_target}:{droppoint_path}"],
109
+ check=True)
110
+
111
+ print("Copy successful.")
112
+ except FileNotFoundError:
113
+ warn("Error: File droppoint.env not found. Did you run"
114
+ " 'beeflow remote droppoint $ssh_target' to create this file?")
115
+ sys.exit(1)
116
+ except json.JSONDecodeError as jde:
117
+ warn(f'Error reading JSON configuration: {jde}')
118
+ sys.exit(1)
119
+ except subprocess.CalledProcessError as err:
120
+ warn(f'Error copying file: {err.stderr}')
121
+ sys.exit(1)
122
+
123
+
124
+ @app.command()
125
+ def submit(ssh_target: str = typer.Argument(..., help='the target to ssh to'),
126
+ wf_name: str = typer.Argument(..., help='the workflow name'),
127
+ tarball_name: str = typer.Argument(..., help='the tarball name'),
128
+ main_cwl: str = typer.Argument(..., help='filename of main CWL'),
129
+ job_file: str = typer.Argument(..., help='filename of yaml file')):
130
+ """Submit the workflow to Beeflow client."""
131
+ port = remote_port_val()
132
+ try:
133
+ result = subprocess.run(
134
+ [
135
+ "curl",
136
+ f"{ssh_target}:{port}/submit_long/{wf_name}/{tarball_name}/{main_cwl}/{job_file}"
137
+ ],
138
+ stdout=subprocess.PIPE,
139
+ stderr=subprocess.PIPE,
140
+ text=True,
141
+ check=True
142
+ )
143
+ response = result.stdout.strip()
144
+
145
+ try:
146
+ response_json = json.loads(response)
147
+ except json.JSONDecodeError:
148
+ warn(f'Unexpected response from API: {response}')
149
+ sys.exit(1)
150
+
151
+ # Check if API response contains an error
152
+ if "error" in response_json:
153
+ warn(f"Error submitting workflow: {response_json['error']}")
154
+ sys.exit(1)
155
+
156
+ print(response_json.get('result'))
157
+
158
+ except subprocess.CalledProcessError as err:
159
+ warn(f'Failed to submit workflow. Error: {err.stderr}')
160
+ sys.exit(1)
161
+
162
+
163
+ @app.command("core-status")
164
+ def core_status(ssh_target: str = typer.Argument(..., help='the target to ssh to')):
165
+ """Check the status of BEEflow and the components."""
166
+ port = remote_port_val()
167
+ try:
168
+ result = subprocess.run(
169
+ ["curl", f"{ssh_target}:{port}/core/status/"],
170
+ stdout=subprocess.PIPE,
171
+ stderr=subprocess.PIPE,
172
+ text=True,
173
+ check=True
174
+ )
175
+ print(result.stdout)
176
+ except subprocess.CalledProcessError:
177
+ warn(f'Failed to check status on {ssh_target}:{port}. Check connection to beeflow.')
178
+ sys.exit(1)
@@ -1,4 +1,9 @@
1
1
  """BEE Cloud Installer Script."""
2
+
3
+ # Disable R1732: Significant code restructuring required to fix
4
+ # Disable W0511: This allows us to have TODOs in the code
5
+ # pylint:disable=W0511,R1732
6
+
2
7
  import argparse
3
8
  import subprocess
4
9
  import sys
@@ -205,6 +210,3 @@ def main():
205
210
 
206
211
  if __name__ == '__main__':
207
212
  main()
208
- # Ignore R1732: Significant code restructuring required to fix
209
- # Ignore W0511: This allows us to have TODOs in the code
210
- # pylama:ignore=W0511,R1732
@@ -0,0 +1 @@
1
+ """beeflow common module."""
@@ -7,6 +7,6 @@ from flask_restful import Api
7
7
  class BeeApi(Api):
8
8
  """Wrapper around Flask-Restful's API to catch exceptions."""
9
9
 
10
- def handle_error(self, e): # noqa (conflict on naming in base class vs. following convention)
10
+ def handle_error(self, e): # pylint: disable=W0613 # conflict on naming in base class vs. following convention
11
11
  """Handle an error or exception."""
12
12
  return make_response(jsonify(error=traceback.format_exc()), 500)
@@ -0,0 +1 @@
1
+ """beeflow common build module."""
@@ -3,6 +3,10 @@
3
3
  All container-based build systems belong here.
4
4
  """
5
5
 
6
+ # Disable W0231: linter doesn't know about abstract classes,
7
+ # it's ok to now call the parent __init__
8
+ # pylint:disable=W0231
9
+
6
10
  import os
7
11
  import shutil
8
12
  import subprocess
@@ -65,14 +69,14 @@ class CharliecloudBuildDriver(ContainerBuildDriver):
65
69
  try:
66
70
  requirement_docker_requirements = self.task.requirements['DockerRequirement'].keys()
67
71
  docker_requirements = docker_requirements.union(requirement_docker_requirements)
68
- req_string = (f'{set(requirement_docker_requirements)}')
72
+ req_string = f'{set(requirement_docker_requirements)}'
69
73
  log.info(f'task {self.task.id} requirement DockerRequirements: {req_string}')
70
74
  except (TypeError, KeyError):
71
75
  log.info(f'task {self.task.name} {self.task.id} no DockerRequirements in requirement')
72
76
  try:
73
77
  hint_docker_requirements = self.task.hints['DockerRequirement'].keys()
74
78
  docker_requirements = docker_requirements.union(hint_docker_requirements)
75
- hint_str = (f'{set(hint_docker_requirements)}')
79
+ hint_str = f'{set(hint_docker_requirements)}'
76
80
  log.info(f'task {self.task.name} {self.task.id} hint DockerRequirements: {hint_str}')
77
81
  except (TypeError, KeyError):
78
82
  log.info(f'task {self.task.name} {self.task.id} hints has no DockerRequirements')
@@ -252,7 +256,7 @@ class CharliecloudBuildDriver(ContainerBuildDriver):
252
256
 
253
257
  # Pull the image.
254
258
  file_name = crt_driver.get_ccname(import_input_path)
255
- cmd = (f'ch-convert {import_input_path} {self.deployed_image_root}/{file_name}')
259
+ cmd = f'ch-convert {import_input_path} {self.deployed_image_root}/{file_name}'
256
260
  log.info(f'Docker import: Assuming container name is {import_input_path}. Correct?')
257
261
  return subprocess.run(cmd, check=True, shell=True)
258
262
 
@@ -423,5 +427,3 @@ class SingularityBuildDriver(ContainerBuildDriver):
423
427
  param_output_directory may be used to override DockerRequirement
424
428
  specs.
425
429
  """
426
- # Ignore W0231: linter doesn't know about abstract classes, it's ok to now call the parent __init__
427
- # pylama:ignore=W0231
@@ -6,6 +6,9 @@ The build_interface will access components of the build_driver and
6
6
  components of the gdb_interface as required.
7
7
  """
8
8
 
9
+ # Disable W0703: Catching generic exception isn't a problem if we just want a descriptive report
10
+ # pylint:disable=W0703
11
+
9
12
  # from beeflow.common.gdb.gdb_interface import GraphDatabaseInterface
10
13
  # from beeflow.common.build.container_drivers import CharliecloudBuildDriver,
11
14
  # SingularityBuildDriver
@@ -74,7 +77,6 @@ if __name__ == '__main__':
74
77
  raise IndexError('build_interface must execute with 2 arguments.') from exc
75
78
 
76
79
  bee_workdir = bc.get('DEFAULT', 'bee_workdir')
77
- handler = bee_logging.save_log(bee_workdir=bee_workdir, log=log, logfile='build_interface.log')
78
80
 
79
81
  try:
80
82
  local_task = arg2task(my_args)
@@ -82,7 +84,3 @@ if __name__ == '__main__':
82
84
  log.info(f'{err}')
83
85
 
84
86
  build_main(local_task)
85
-
86
- # Ignore W0703: Catching generic exception isn't a problem if we just want a descriptive report
87
- # Ignore C901: "'build_main' is too complex" - this function is just around 40 lines
88
- # pylama:ignore=W0703,C901
@@ -5,6 +5,6 @@ import click
5
5
  class NaturalOrderGroup(click.Group):
6
6
  """Natural ordering class for using with CLI code."""
7
7
 
8
- def list_commands(self, ctx): # noqa
8
+ def list_commands(self, ctx):
9
9
  """List the commands in order."""
10
10
  return self.commands.keys()
@@ -1,4 +1,8 @@
1
1
  """Cloud init module."""
2
+
3
+ # Disable W0611: These are meant to be used by external code
4
+ # pylint:disable=W0611
5
+
2
6
  from beeflow.common.cloud import chameleoncloud
3
7
  from beeflow.common.cloud import openstack
4
8
  from beeflow.common.cloud import provider
@@ -21,5 +25,3 @@ def get_provider(name, **kwargs):
21
25
  return providers[name](**kwargs)
22
26
 
23
27
  raise RuntimeError(f'Invalid provider "{name}"')
24
- # Ignore W0611: These are meant to be used by external code
25
- # pylama:ignore=W0611
@@ -19,7 +19,7 @@ class ChameleoncloudProvider(provider.Provider):
19
19
  'Use the Horizon interface instead'
20
20
  )
21
21
 
22
- def get_ext_ip_addr(self, node_name): # noqa
22
+ def get_ext_ip_addr(self, node_name): # pylint: disable=W0613
23
23
  """Get the external IP address of the node, if it has one."""
24
24
  if self._stack_name is not None:
25
25
  stack = self._api.get_stack(self._stack_name)
@@ -19,7 +19,7 @@ class GoogleProvider(provider.Provider):
19
19
 
20
20
  def get_ext_ip_addr(self, node_name):
21
21
  """Get the external IP of this node (or None if no IP)."""
22
- res = self._api.instances().get(instance=node_name, # noqa (can't find instances member)
22
+ res = self._api.instances().get(instance=node_name,
23
23
  project=self.project,
24
24
  zone=self.zone).execute()
25
25
  try:
@@ -34,7 +34,7 @@ class GoogleProvider(provider.Provider):
34
34
  # This just creates instances one-by-one. There may be a better API call
35
35
  # to just create everything at once.
36
36
  for instance in config['instances']:
37
- call = self._api.instances().insert(project=self.project, # noqa (can't find instances member)
37
+ call = self._api.instances().insert(project=self.project,
38
38
  zone=self.zone, body=instance)
39
39
  res = call.execute()
40
40
  print(res)