hpc-beeflow 0.1.11.dev2__tar.gz → 0.1.11.dev3__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 (348) hide show
  1. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/PKG-INFO +1 -1
  2. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/client/bee_client.py +11 -4
  3. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/client/core.py +3 -0
  4. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/build/container_drivers.py +47 -41
  5. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/deps/neo4j_manager.py +32 -14
  6. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/gdb/graphml_key_updater.py +23 -8
  7. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/gdb/neo4j_driver.py +16 -8
  8. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/parser/parser.py +1 -1
  9. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/task_manager/background.py +5 -3
  10. hpc_beeflow-0.1.11.dev3/beeflow/tests/test_wf_utils.py +61 -0
  11. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/wf_manager/resources/wf_utils.py +8 -11
  12. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/pyproject.toml +1 -1
  13. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/LICENSE +0 -0
  14. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/README.rst +0 -0
  15. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/__init__.py +0 -0
  16. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/client/README.md +0 -0
  17. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/client/__init__.py +0 -0
  18. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/client/remote_client.py +0 -0
  19. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/cloud_launcher.py +0 -0
  20. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/README.md +0 -0
  21. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/__init__.py +0 -0
  22. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/api.py +0 -0
  23. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/build/README.md +0 -0
  24. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/build/__init__.py +0 -0
  25. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/build/build_driver.py +0 -0
  26. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/build/utils.py +0 -0
  27. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/build_interfaces.py +0 -0
  28. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cli.py +0 -0
  29. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cli_connection.py +0 -0
  30. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cloud/README.md +0 -0
  31. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cloud/__init__.py +0 -0
  32. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cloud/chameleoncloud.py +0 -0
  33. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cloud/cloud.py +0 -0
  34. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cloud/constants.py +0 -0
  35. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cloud/google.py +0 -0
  36. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cloud/openstack.py +0 -0
  37. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cloud/provider.py +0 -0
  38. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/config_driver.py +0 -0
  39. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/config_utils.py +0 -0
  40. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/config_validator.py +0 -0
  41. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/connection.py +0 -0
  42. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/container_path.py +0 -0
  43. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/crt/__init__.py +0 -0
  44. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/crt/charliecloud_driver.py +0 -0
  45. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/crt/crt_driver.py +0 -0
  46. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/crt/singularity_driver.py +0 -0
  47. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/crt_interface.py +0 -0
  48. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cwl/__init__.py +0 -0
  49. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cwl/cwl.py +0 -0
  50. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cwl/examples/Dockerfile.comd-x86_64 +0 -0
  51. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cwl/examples/README.txt +0 -0
  52. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cwl/examples/cat_grep_tar.py +0 -0
  53. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cwl/examples/comd.py +0 -0
  54. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cwl/examples/comd_driver.py +0 -0
  55. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cwl/examples/comd_pre.sh +0 -0
  56. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cwl/examples/lorem.txt +0 -0
  57. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/cwl/workflow.py +0 -0
  58. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/db/__init__.py +0 -0
  59. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/db/bdb.py +0 -0
  60. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/db/client_db.py +0 -0
  61. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/db/sched_db.py +0 -0
  62. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/db/tm_db.py +0 -0
  63. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/db/wfm_db.py +0 -0
  64. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/deps/__init__.py +0 -0
  65. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/deps/celery_manager.py +0 -0
  66. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/deps/container_manager.py +0 -0
  67. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/deps/redis_manager.py +0 -0
  68. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/expr.py +0 -0
  69. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/gdb/DESIGN.md +0 -0
  70. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/gdb/__init__.py +0 -0
  71. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/gdb/gdb_driver.py +0 -0
  72. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/gdb/generate_graph.py +0 -0
  73. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/gdb/neo4j_cypher.py +0 -0
  74. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/integration/__init__.py +0 -0
  75. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/integration/generated_workflows.py +0 -0
  76. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/integration/utils.py +0 -0
  77. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/integration_test.py +0 -0
  78. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/log.py +0 -0
  79. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/parser/.gitignore +0 -0
  80. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/parser/README.md +0 -0
  81. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/parser/__init__.py +0 -0
  82. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/paths.py +0 -0
  83. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/states.py +0 -0
  84. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/tab_completion.py +0 -0
  85. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/validation.py +0 -0
  86. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/wf_data.py +0 -0
  87. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/wf_interface.py +0 -0
  88. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/wf_profiler.py +0 -0
  89. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/worker/README.md +0 -0
  90. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/worker/__init__.py +0 -0
  91. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/worker/flux_worker.py +0 -0
  92. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/worker/lsf_worker.py +0 -0
  93. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/worker/simple_worker.py +0 -0
  94. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/worker/slurm_worker.py +0 -0
  95. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/worker/utils.py +0 -0
  96. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/worker/worker.py +0 -0
  97. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/common/worker_interface.py +0 -0
  98. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cloud_templates/dora.jinja +0 -0
  99. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cloud_templates/dora.yaml +0 -0
  100. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/README.md +0 -0
  101. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/README.md +0 -0
  102. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/blast/README.md +0 -0
  103. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/blast/blast.yml +0 -0
  104. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/blast/blast_output.cwl +0 -0
  105. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/blast/blast_output_err.cwl +0 -0
  106. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/blast/blast_split.cwl +0 -0
  107. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/blast/blast_wf.cwl +0 -0
  108. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/blast/blast_worker001.cwl +0 -0
  109. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/blast/blast_worker002.cwl +0 -0
  110. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/blast/input/small.fasta +0 -0
  111. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cat-grep-fail/README.md +0 -0
  112. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cat-grep-fail/cat.cwl +0 -0
  113. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep0.cwl +0 -0
  114. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cat-grep-fail/grep1.cwl +0 -0
  115. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cat-grep-fail/input.yml +0 -0
  116. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cat-grep-fail/lorem.txt +0 -0
  117. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cat-grep-fail/tar.cwl +0 -0
  118. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cat-grep-fail/workflow.cwl +0 -0
  119. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cgt-2branches/README.txt +0 -0
  120. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cgt-2branches/cat.cwl +0 -0
  121. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cgt-2branches/cat2.cwl +0 -0
  122. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep0.cwl +0 -0
  123. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep1.cwl +0 -0
  124. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep2.cwl +0 -0
  125. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cgt-2branches/grep3.cwl +0 -0
  126. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cgt-2branches/input.yml +0 -0
  127. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cgt-2branches/lorem.txt +0 -0
  128. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cgt-2branches/tar.cwl +0 -0
  129. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cgt-2branches/tar2.cwl +0 -0
  130. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/cgt-2branches/workflow.cwl +0 -0
  131. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ci/README.md +0 -0
  132. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr.cwl +0 -0
  133. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.json +0 -0
  134. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_job.yml +0 -0
  135. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ci/clamr_wf.cwl +0 -0
  136. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ci/ffmpeg.cwl +0 -0
  137. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/Dockerfile.clamr-ffmpeg +0 -0
  138. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/README.md +0 -0
  139. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr.cwl +0 -0
  140. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_job.json +0 -0
  141. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_job.yml +0 -0
  142. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/clamr_wf.cwl +0 -0
  143. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/ffmpeg.cwl +0 -0
  144. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/post_run.sh +0 -0
  145. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-build_script/pre_run.sh +0 -0
  146. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/Dockerfile.clamr-ffmpeg +0 -0
  147. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/README.md +0 -0
  148. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr.cwl +0 -0
  149. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_job.json +0 -0
  150. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_job.yml +0 -0
  151. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/clamr_wf.cwl +0 -0
  152. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/ffmpeg.cwl +0 -0
  153. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/post_run.sh +0 -0
  154. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-ffmpeg-validate_script/pre_run.sh +0 -0
  155. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf/README.md +0 -0
  156. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr.cwl +0 -0
  157. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.json +0 -0
  158. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_job.yml +0 -0
  159. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf/clamr_wf.cwl +0 -0
  160. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf/ffmpeg.cwl +0 -0
  161. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/README.md +0 -0
  162. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr.cwl +0 -0
  163. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_job.json +0 -0
  164. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_job.yml +0 -0
  165. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/clamr_wf.cwl +0 -0
  166. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-chicoma/ffmpeg.cwl +0 -0
  167. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/README.md +0 -0
  168. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/lsf-charliecloud/README.md +0 -0
  169. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/lsf-charliecloud/cf-summit.cwl +0 -0
  170. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/Dockerfile.clamr-lanl-x86_64 +0 -0
  171. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/README.md +0 -0
  172. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf-darwin.cwl +0 -0
  173. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf-no-owrite.cwl +0 -0
  174. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/cf.cwl +0 -0
  175. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/copyContainer_containerName.cwl +0 -0
  176. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/dockerFile_containerName.cwl +0 -0
  177. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-charliecloud/dockerPull.cwl +0 -0
  178. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-singularity/README.md +0 -0
  179. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-noyaml/slurm-singularity/cf-singularity.cwl +0 -0
  180. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/README.md +0 -0
  181. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr.cwl +0 -0
  182. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_job.json +0 -0
  183. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_job.yml +0 -0
  184. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/clamr_wf.cwl +0 -0
  185. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-singularity/ffmpeg.cwl +0 -0
  186. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/README.md +0 -0
  187. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr.cwl +0 -0
  188. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_job.json +0 -0
  189. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_job.yml +0 -0
  190. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/clamr_wf.cwl +0 -0
  191. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-summit/ffmpeg.cwl +0 -0
  192. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/README.md +0 -0
  193. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr.cwl +0 -0
  194. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_job.json +0 -0
  195. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_job.yml +0 -0
  196. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/clamr_wf.cwl +0 -0
  197. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/clamr-wf-use-container/ffmpeg.cwl +0 -0
  198. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.cwl +0 -0
  199. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/lulesh-mpi/lulesh.yml +0 -0
  200. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh.cwl +0 -0
  201. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh_job.yml +0 -0
  202. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/lulesh-mpi-multi-file/lulesh_wf.cwl +0 -0
  203. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/nwchem-mpi/README.md +0 -0
  204. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.cwl +0 -0
  205. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem.yml +0 -0
  206. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/nwchem-mpi/nwchem_bin.cwl +0 -0
  207. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant/graph.cwl +0 -0
  208. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant/pennant.yml +0 -0
  209. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant/pennant_1_node.cwl +0 -0
  210. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant/pennant_2_node.cwl +0 -0
  211. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant/pennant_4_node.cwl +0 -0
  212. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant/pennant_wf.cwl +0 -0
  213. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant-build/Dockerfile.pennant-flux-x86_64 +0 -0
  214. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant-build/Dockerfile.pennant-graph-x86_64 +0 -0
  215. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant-build/graph.cwl +0 -0
  216. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.py +0 -0
  217. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant-build/graph_pennant.sh +0 -0
  218. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant-build/pennant.yml +0 -0
  219. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_1_node.cwl +0 -0
  220. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_2_node.cwl +0 -0
  221. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_4_node.cwl +0 -0
  222. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_8_node.cwl +0 -0
  223. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pennant-build/pennant_wf.cwl +0 -0
  224. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/pytest.ini +0 -0
  225. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/simple-workflows/README.md +0 -0
  226. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/simple-workflows/cancel.cwl +0 -0
  227. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/README.md +0 -0
  228. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/gc-nc.cwl +0 -0
  229. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/gc.cwl +0 -0
  230. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/bee_workflows/simple-workflows/grep-wordcount/lorem.txt +0 -0
  231. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/README.md +0 -0
  232. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/builder/dockerFile.cwl +0 -0
  233. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/builder/dockerPull.cwl +0 -0
  234. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/grep-wordcount/gc.cwl +0 -0
  235. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/grep-wordcount/lorem.txt +0 -0
  236. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/helloworld.cwl +0 -0
  237. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/helloworld_input.yaml +0 -0
  238. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/DAG_example-1.png +0 -0
  239. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/README.md +0 -0
  240. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add.cwl +0 -0
  241. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add_multiply_example_workflow.cwl +0 -0
  242. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/add_step1.py +0 -0
  243. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/isolated test.cwl +0 -0
  244. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/job.yaml +0 -0
  245. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/multiply.cwl +0 -0
  246. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/multiply_step2.py +0 -0
  247. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/example-1/workflow_generater_python.py +0 -0
  248. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/README.md +0 -0
  249. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree.py +0 -0
  250. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree_output.txt +0 -0
  251. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/decision_tree_tool.cwl +0 -0
  252. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/expectedValue.txt +0 -0
  253. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/hiring1.txt +0 -0
  254. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/linear_regress_output.txt +0 -0
  255. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/linear_regression.py +0 -0
  256. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/machinelearning_pipeline.cwl +0 -0
  257. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/out.PNG +0 -0
  258. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/predict_code.py +0 -0
  259. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/predict_tool.cwl +0 -0
  260. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/read_dataset.py +0 -0
  261. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/read_dataset_tool.cwl +0 -0
  262. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/cwl/cwl_validation/ml-workflow/machine_learning/regress_tool.cwl +0 -0
  263. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/Dockerfile.builder_demo +0 -0
  264. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/Dockerfile.clamr-ffmpeg +0 -0
  265. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/Dockerfile.clamr-lanl-x86_64 +0 -0
  266. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/Dockerfile.clamr-ppc64le +0 -0
  267. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/Dockerfile.comd-flux-x86_64 +0 -0
  268. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/Dockerfile.deb9ompi-x86_64 +0 -0
  269. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/Dockerfile.lulesh-x86_64 +0 -0
  270. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/Dockerfile.neo4j +0 -0
  271. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/Dockerfile.nwchem-x86_64 +0 -0
  272. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/Dockerfile.pennant-flux-x86_64 +0 -0
  273. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/Dockerfile.vaspompi-x86_64 +0 -0
  274. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/README.md +0 -0
  275. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.comd-x86_64-wpmix +0 -0
  276. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.debian +0 -0
  277. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/comd-pmix-support/Dockerfile.openmpi-3.1.5 +0 -0
  278. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/comd-pmix-support/README.md +0 -0
  279. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/comd-pmix-support/dont-init-ucx-on-intel-cray.patch +0 -0
  280. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/pennant-graph/Dockerfile.pennant-graph-x86_64 +0 -0
  281. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.py +0 -0
  282. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/data/dockerfiles/pennant-graph/graph_pennant.sh +0 -0
  283. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/remote/__init__.py +0 -0
  284. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/remote/remote.py +0 -0
  285. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/scheduler/README.md +0 -0
  286. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/scheduler/__init__.py +0 -0
  287. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/scheduler/algorithms.py +0 -0
  288. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/scheduler/resource_allocation.py +0 -0
  289. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/scheduler/scheduler.py +0 -0
  290. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/scheduler/scheduler.yaml +0 -0
  291. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/scheduler/serializable.py +0 -0
  292. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/scheduler/task.py +0 -0
  293. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/task_manager/__init__.py +0 -0
  294. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/task_manager/task_actions.py +0 -0
  295. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/task_manager/task_manager.py +0 -0
  296. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/task_manager/task_submit.py +0 -0
  297. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/task_manager/utils.py +0 -0
  298. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/42.tgz +0 -0
  299. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/README.md +0 -0
  300. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/cf.cwl +0 -0
  301. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/clamr-wf/clamr.cwl +0 -0
  302. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/clamr-wf/clamr_job.json +0 -0
  303. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/clamr-wf/clamr_job.yml +0 -0
  304. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/clamr-wf/clamr_wf.cwl +0 -0
  305. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/clamr-wf/ffmpeg.cwl +0 -0
  306. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/clamr-wf/mv_script.cwl +0 -0
  307. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/clamr-wf/mv_script.sh +0 -0
  308. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/clamr-wf.tgz +0 -0
  309. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/cwl_files/cat-grep-tar.cwl +0 -0
  310. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/cwl_files/cat-grep-tar.yml +0 -0
  311. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/cwl_files/clamr.cwl +0 -0
  312. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/cwl_files/clamr.yml +0 -0
  313. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/cwl_files/comd.cwl +0 -0
  314. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/cwl_files/comd.yml +0 -0
  315. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/cwl_files/task-req.cwl +0 -0
  316. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/cwl_files/task-req.yml +0 -0
  317. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/gdb.py +0 -0
  318. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/mocks.py +0 -0
  319. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_bee_client.py +0 -0
  320. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_charliecloud_driver.py +0 -0
  321. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_cloud.py +0 -0
  322. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_config_driver.py +0 -0
  323. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_config_utils.py +0 -0
  324. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_config_validator.py +0 -0
  325. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_container_path.py +0 -0
  326. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_cwl.py +0 -0
  327. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_cwl_workflow.py +0 -0
  328. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_db_client.py +0 -0
  329. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_db_sched.py +0 -0
  330. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_db_tm.py +0 -0
  331. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_neo4j_cypher.py +0 -0
  332. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_parser.py +0 -0
  333. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_remote.py +0 -0
  334. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_remote_client.py +0 -0
  335. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_scheduler.py +0 -0
  336. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_scheduler_resource_allocation.py +0 -0
  337. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_scheduler_rest.py +0 -0
  338. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_slurm_worker.py +0 -0
  339. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_tm.py +0 -0
  340. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_wf_interface.py +0 -0
  341. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_wf_manager.py +0 -0
  342. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/tests/test_wf_update.py +0 -0
  343. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/wf_manager/__init__.py +0 -0
  344. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/wf_manager/resources/__init__.py +0 -0
  345. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/wf_manager/resources/wf_actions.py +0 -0
  346. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/wf_manager/resources/wf_list.py +0 -0
  347. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/wf_manager/resources/wf_update.py +0 -0
  348. {hpc_beeflow-0.1.11.dev2 → hpc_beeflow-0.1.11.dev3}/beeflow/wf_manager/wf_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: hpc-beeflow
3
- Version: 0.1.11.dev2
3
+ Version: 0.1.11.dev3
4
4
  Summary: A software package for containerizing HPC applications and managing job workflows
5
5
  Keywords: bee,hpc,workflow,cluster,computing
6
6
  Author: BEE-LANL Dev Team
@@ -739,14 +739,21 @@ def dag(wf_id: str = typer.Argument(..., callback=match_short_id),
739
739
  typer.secho("Workflow has been archived. All new DAGs will look the same as the one "
740
740
  "in the archive directory.",
741
741
  fg=typer.colors.MAGENTA)
742
- wf_utils.export_dag(wf_id, output_dir, graphmls_dir, no_dag_dir)
742
+ dot_avail = wf_utils.export_dag(wf_id, output_dir, graphmls_dir, no_dag_dir)
743
743
  else:
744
744
  wf_dir = wf_utils.get_workflow_dir(wf_id)
745
745
  graphmls_dir = wf_dir + '/graphmls'
746
746
  os.makedirs(graphmls_dir, exist_ok=True)
747
- wf_utils.export_dag(wf_id, output_dir, graphmls_dir, no_dag_dir, wf_dir)
748
- typer.secho(f"DAG for workflow {_short_id(wf_id)} has been exported successfully.",
749
- fg=typer.colors.GREEN)
747
+ dot_avail = wf_utils.export_dag(wf_id, output_dir, graphmls_dir, no_dag_dir, wf_dir)
748
+ if dot_avail:
749
+ typer.secho(f"DAG for workflow {_short_id(wf_id)} has been exported successfully.",
750
+ fg=typer.colors.GREEN)
751
+ else:
752
+ typer.secho(
753
+ f"GraphML for workflow {_short_id(wf_id)} has been exported successfully."
754
+ "(Graphviz not found, so no rendered DAG was produced.)",
755
+ fg=typer.colors.GREEN
756
+ )
750
757
 
751
758
 
752
759
  @app.callback(invoke_without_command=True)
@@ -344,6 +344,9 @@ class Beeflow:
344
344
  def loop(self):
345
345
  """Run the main loop."""
346
346
  print(f'Running on {socket.gethostname()}')
347
+ # Check for Graphviz:
348
+ if not shutil.which("dot"):
349
+ print('Graphviz was not found on PATH.')
347
350
  self.mgr.run(self.base_components)
348
351
  with cli_connection.server(paths.beeflow_socket()) as server:
349
352
  while not self.quit:
@@ -45,47 +45,53 @@ class CharliecloudBuildDriver(ContainerBuildDriver):
45
45
  :param task: the task to build for
46
46
  :type task: Task
47
47
  """
48
- # Store build container archive pased on config file or relative to bee_workdir if not set.
49
- container_archive = bc.get('builder', 'container_archive')
50
- self.container_archive = bc.resolve_path(container_archive)
51
- os.makedirs(self.container_archive, exist_ok=True)
52
- # Deploy build tarballs relative to /var/tmp/username/beeflow by default
53
- deployed_image_root = bc.get('builder', 'deployed_image_root')
54
- # Make sure conf_file path exists
55
- os.makedirs(deployed_image_root, exist_ok=True)
56
- # Make sure path is absolute
57
- deployed_image_root = bc.resolve_path(deployed_image_root)
58
- self.deployed_image_root = deployed_image_root
59
- os.makedirs(self.deployed_image_root, exist_ok=True)
60
- # Set container-relative output directory based on BeeConfig, or use '/'
61
- container_output_path = bc.get('builder', 'container_output_path')
62
- self.container_output_path = container_output_path
63
- # record that a Charliecloud builder was used
64
- # bc.modify_section('user', 'builder', {'container_type': 'charliecloud'})
65
- self.task = task
66
- self.docker_image_id = None
67
- self.container_name = None
68
- docker_requirements = set()
69
- try:
70
- requirement_docker_requirements = self.task.requirements['DockerRequirement'].keys()
71
- docker_requirements = docker_requirements.union(requirement_docker_requirements)
72
- req_string = f'{set(requirement_docker_requirements)}'
73
- log.info(f'task {self.task.id} requirement DockerRequirements: {req_string}')
74
- except (TypeError, KeyError):
75
- log.info(f'task {self.task.name} {self.task.id} no DockerRequirements in requirement')
76
- try:
77
- hint_docker_requirements = self.task.hints['DockerRequirement'].keys()
78
- docker_requirements = docker_requirements.union(hint_docker_requirements)
79
- hint_str = f'{set(hint_docker_requirements)}'
80
- log.info(f'task {self.task.name} {self.task.id} hint DockerRequirements: {hint_str}')
81
- except (TypeError, KeyError):
82
- log.info(f'task {self.task.name} {self.task.id} hints has no DockerRequirements')
83
- log.info(f'task {self.task.id} union DockerRequirements : {docker_requirements}')
84
- exec_superset = self.resolve_priority()
85
- self.exec_list = [i for i in exec_superset if i[1] in docker_requirements]
86
- log_exec_list = [i[1] for i in self.exec_list]
87
- log.info(f'task {self.task.id} DockerRequirement execution order will be: {log_exec_list}')
88
- log.info('Execution order pre-empts hint/requirement status.')
48
+ has_container = task.get_full_requirement('DockerRequirement')
49
+ if has_container: # only try to build if task has a container
50
+ # Store build container archive pased on config file or relative to bee_workdir
51
+ # if not set.
52
+ container_archive = bc.get('builder', 'container_archive')
53
+ self.container_archive = bc.resolve_path(container_archive)
54
+ os.makedirs(self.container_archive, exist_ok=True)
55
+ # Deploy build tarballs relative to /var/tmp/username/beeflow by default
56
+ deployed_image_root = bc.get('builder', 'deployed_image_root')
57
+ # Make sure conf_file path exists
58
+ os.makedirs(deployed_image_root, exist_ok=True)
59
+ # Make sure path is absolute
60
+ deployed_image_root = bc.resolve_path(deployed_image_root)
61
+ self.deployed_image_root = deployed_image_root
62
+ os.makedirs(self.deployed_image_root, exist_ok=True)
63
+ # Set container-relative output directory based on BeeConfig, or use '/'
64
+ container_output_path = bc.get('builder', 'container_output_path')
65
+ self.container_output_path = container_output_path
66
+ # record that a Charliecloud builder was used
67
+ # bc.modify_section('user', 'builder', {'container_type': 'charliecloud'})
68
+ self.task = task
69
+ self.docker_image_id = None
70
+ self.container_name = None
71
+ docker_requirements = set()
72
+ try:
73
+ req_docker_requirements = self.task.requirements['DockerRequirement'].keys()
74
+ docker_requirements = docker_requirements.union(req_docker_requirements)
75
+ req_string = f'{set(req_docker_requirements)}'
76
+ log.info(f'task {self.task.id} requirement DockerRequirements: {req_string}')
77
+ except (TypeError, KeyError):
78
+ log.info(f'task {self.task.name} {self.task.id} '
79
+ 'no DockerRequirements in requirement')
80
+ try:
81
+ hint_docker_requirements = self.task.hints['DockerRequirement'].keys()
82
+ docker_requirements = docker_requirements.union(hint_docker_requirements)
83
+ hint_str = f'{set(hint_docker_requirements)}'
84
+ log.info(f'task {self.task.name} {self.task.id} hint '
85
+ f'DockerRequirements: {hint_str}')
86
+ except (TypeError, KeyError):
87
+ log.info(f'task {self.task.name} {self.task.id} hints has no DockerRequirements')
88
+ log.info(f'task {self.task.id} union DockerRequirements : {docker_requirements}')
89
+ exec_superset = self.resolve_priority()
90
+ self.exec_list = [i for i in exec_superset if i[1] in docker_requirements]
91
+ log_exec_list = [i[1] for i in self.exec_list]
92
+ log.info(f'task {self.task.id} DockerRequirement execution order '
93
+ f'will be: {log_exec_list}')
94
+ log.info('Execution order pre-empts hint/requirement status.')
89
95
 
90
96
  def get_docker_req(self, docker_req_param):
91
97
  """Get dockerRequirement, prioritizing requirements over hints.
@@ -5,8 +5,13 @@ import shutil
5
5
  import re
6
6
  import subprocess
7
7
  import time
8
+ import logging
9
+
10
+ from beeflow.common.gdb import neo4j_driver
11
+ from beeflow.common.gdb.neo4j_driver import (DEFAULT_BOLT_PORT)
12
+
13
+ from beeflow.common.db.bdb import connect_db
8
14
 
9
- from beeflow.wf_manager.resources import wf_utils
10
15
  from beeflow.common.db import wfm_db
11
16
 
12
17
  from beeflow.common import paths
@@ -15,6 +20,7 @@ from beeflow.common.deps import container_manager
15
20
  from beeflow.common.config_driver import BeeConfig as bc
16
21
  from beeflow.common import log as bee_logging
17
22
 
23
+
18
24
  BEE_WORKDIR = None
19
25
  MOUNT_DIR = None
20
26
  DATA_DIR = None
@@ -23,9 +29,9 @@ RUN_DIR = None
23
29
  CERTS_DIR = None
24
30
  CONFS_DIR = None
25
31
  GRAPHMLS_DIR = None
26
- CONTAINER_PATH = Nonelog = bee_logging.setup('neo4j')
27
- log = bee_logging.setup('neo4j')
32
+ CONTAINER_PATH = None
28
33
 
34
+ log = None # pylint: disable=C0103
29
35
 
30
36
  def get_open_port():
31
37
  """Return an open ephemeral port."""
@@ -44,7 +50,7 @@ def setup_ports():
44
50
  http_port = get_open_port()
45
51
  https_port = get_open_port()
46
52
 
47
- db = wf_utils.connect_db(wfm_db, wf_utils.get_db_path())
53
+ db = connect_db(wfm_db, bc.get('DEFAULT', 'bee_workdir') + "/wfm.db")
48
54
 
49
55
  db.info.set_port('bolt', bolt_port)
50
56
  db.info.set_port('http', http_port)
@@ -141,7 +147,7 @@ def create_credentials():
141
147
  log.error("neo4j-admin set-initial-password failed")
142
148
 
143
149
 
144
- def create_database():
150
+ def create_database(bolt_port):
145
151
  """Create the neo4j database and return the process."""
146
152
  try:
147
153
  command = ['neo4j', 'console']
@@ -157,7 +163,7 @@ def create_database():
157
163
  "-W", "-b", GRAPHMLS_DIR + ":/var/lib/neo4j/import",
158
164
  CONTAINER_PATH, "--", *command
159
165
  ], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
160
- wait_gdb()
166
+ wait_gdb(bolt_port=bolt_port)
161
167
  return proc
162
168
 
163
169
  except FileNotFoundError:
@@ -167,6 +173,12 @@ def create_database():
167
173
 
168
174
  def start():
169
175
  """Start the graph database."""
176
+
177
+ global log
178
+ log = bee_logging.setup("neo4j")
179
+ log.setLevel(logging.INFO)
180
+ log.propagate = False
181
+
170
182
  log.info('Starting Neo4j Database')
171
183
 
172
184
  bolt_port, http_port, https_port = setup_ports()
@@ -179,17 +191,23 @@ def start():
179
191
 
180
192
  create_credentials()
181
193
 
182
- return create_database()
194
+ return create_database(bolt_port=bolt_port)
183
195
 
184
196
 
185
- def wait_gdb():
186
- """Need to wait for the GDB. Currently, we're using the sleep time paramater.
187
-
188
- We'd like to remove that in the future.
197
+ def wait_gdb(bolt_port=DEFAULT_BOLT_PORT):
198
+ """
199
+ Block until the Neo4j instance answers a Bolt handshake.
189
200
  """
190
- gdb_sleep_time = bc.get('graphdb', 'sleep_time')
191
- print(f'waiting {gdb_sleep_time}s for GDB to come up')
192
- time.sleep(gdb_sleep_time)
201
+ connect_neo4j_driver(bolt_port)
202
+
203
+
204
+ def connect_neo4j_driver(bolt_port):
205
+ """Create a neo4j driver to a gdb through bolt port."""
206
+ driver = neo4j_driver.Neo4jDriver()
207
+ driver.connect(user="neo4j", bolt_port=bolt_port,
208
+ db_hostname=bc.get("graphdb", "hostname"),
209
+ password=bc.get("graphdb", "dbpass"))
210
+ driver.create_bee_node()
193
211
 
194
212
 
195
213
  def remove_gdb():
@@ -31,7 +31,18 @@ default_key_definitions = {
31
31
  }
32
32
 
33
33
 
34
- def update_graphml(wf_id, graphmls_dir):
34
+ def backup_graphml(path, graphmls_dir, short_id):
35
+ """Backup graphmls."""
36
+ if os.path.exists(path):
37
+ i = 1
38
+ backup_path = f'{graphmls_dir}/{short_id}_v{i}.graphml'
39
+ while os.path.exists(backup_path):
40
+ i += 1
41
+ backup_path = f'{graphmls_dir}/{short_id}_v{i}.graphml'
42
+ shutil.copy(path, backup_path)
43
+
44
+
45
+ def update_graphml(wf_id, graphmls_dir, extra_output_dir=None, no_dag_dir=False):
35
46
  """Update GraphML file by ensuring required keys are present and updating its structure."""
36
47
  short_id = wf_id[:6]
37
48
  # Define paths
@@ -41,13 +52,7 @@ def update_graphml(wf_id, graphmls_dir):
41
52
  gdb_graphml_path = gdb_graphmls_dir + "/" + short_id + ".graphml"
42
53
  output_graphml_path = graphmls_dir + "/" + short_id + ".graphml"
43
54
  # Handle making multiple versions of the graphmls without overriding old ones
44
- if os.path.exists(output_graphml_path):
45
- i = 1
46
- backup_path = f'{graphmls_dir}/{short_id}_v{i}.graphml'
47
- while os.path.exists(backup_path):
48
- i += 1
49
- backup_path = f'{graphmls_dir}/{short_id}_v{i}.graphml'
50
- shutil.copy(output_graphml_path, backup_path)
55
+ backup_graphml(output_graphml_path, graphmls_dir, short_id)
51
56
  # Parse the GraphML file and preserve namespaces
52
57
  tree = ET.parse(gdb_graphml_path)
53
58
  root = tree.getroot()
@@ -69,3 +74,13 @@ def update_graphml(wf_id, graphmls_dir):
69
74
 
70
75
  # Save the updated GraphML file
71
76
  tree.write(output_graphml_path, encoding='UTF-8', xml_declaration=True)
77
+
78
+ # Saving the GraphML file to an extra user specified location
79
+ if extra_output_dir:
80
+ if not no_dag_dir:
81
+ extra_output_dir += "/" + short_id + "-graphmls"
82
+ extra_graphml_path = extra_output_dir + "/" + short_id + ".graphml"
83
+ os.makedirs(extra_output_dir, exist_ok=True)
84
+ if extra_graphml_path != output_graphml_path:
85
+ backup_graphml(extra_graphml_path, extra_output_dir, short_id)
86
+ tree.write(extra_graphml_path, encoding='UTF-8', xml_declaration=True)
@@ -10,6 +10,7 @@ either standardized or read from a config file.
10
10
  # Disable E1129: External module is missing proper resource context manager methods.
11
11
  # pylint:disable=E1129
12
12
 
13
+ import time
13
14
  from neo4j import GraphDatabase as Neo4jDatabase
14
15
  from neo4j.exceptions import ServiceUnavailable
15
16
 
@@ -27,6 +28,8 @@ DEFAULT_HOSTNAME = "localhost"
27
28
  DEFAULT_BOLT_PORT = "7687"
28
29
  DEFAULT_USER = "neo4j"
29
30
  DEFAULT_PASSWORD = "password"
31
+ MAX_WAIT_SECS = 60
32
+ RETRY_DELAY_SECS = 5
30
33
 
31
34
 
32
35
  class Neo4jNotRunning(Exception):
@@ -61,14 +64,19 @@ class Neo4jDriver(GraphDatabaseDriver):
61
64
  bolt_port = kwargs.get("bolt_port", DEFAULT_BOLT_PORT)
62
65
  password = kwargs.get("db_pass", DEFAULT_PASSWORD)
63
66
  uri = f"bolt://{db_hostname}:{bolt_port}"
64
- try:
65
- # Connect to the Neo4j database using the Neo4j proprietary driver
66
- self._driver = Neo4jDatabase.driver(uri, auth=(user, password)) # pylint: disable=W0201
67
- # Checks the connection and returns ServiceUnavailable if something is wrong
68
- self._driver.verify_connectivity()
69
- except ServiceUnavailable as sue:
70
- log.error("Neo4j database is unavailable")
71
- raise Neo4jNotRunning("Neo4j database is unavailable") from sue
67
+ start_time = time.monotonic()
68
+ self._driver = Neo4jDatabase.driver(uri, auth=(user, password)) # pylint: disable=W0201
69
+ while True:
70
+ try:
71
+ self._driver.verify_connectivity()
72
+ return
73
+ except ServiceUnavailable as sue:
74
+ elapsed = time.monotonic() - start_time
75
+ if elapsed >= MAX_WAIT_SECS:
76
+ log.error("Neo4j database is unavailable")
77
+ raise Neo4jNotRunning("Neo4j database is unavailable") from sue
78
+ log.info(f"Waiting {RETRY_DELAY_SECS} seconds for Neo4j to become ready...")
79
+ time.sleep(RETRY_DELAY_SECS)
72
80
 
73
81
  def create_bee_node(self):
74
82
  """Create the "BEE" node for all workflows to connect to."""
@@ -281,7 +281,7 @@ class CwlParser:
281
281
  raise CwlParseError(f"specified step output {out} not produced by CommandLineTool")
282
282
 
283
283
  output_type = out_map[out].type
284
- glob = None
284
+ glob = ""
285
285
  if output_type == "stdout":
286
286
  if not stdout:
287
287
  raise CwlParseError(f"stdout capture required for step output {out} "
@@ -40,9 +40,11 @@ def resolve_environment(task):
40
40
  def submit_task(db, worker, task):
41
41
  """Submit (or resubmit) a task."""
42
42
  try:
43
- log.info(f'Resolving environment for task {task.name}')
44
- resolve_environment(task)
45
- log.info(f'Environment preparation complete for task {task.name}')
43
+ has_container = task.get_full_requirement('DockerRequirement')
44
+ if has_container:
45
+ log.info(f'Resolving environment for task {task.name}')
46
+ resolve_environment(task)
47
+ log.info(f'Environment preparation complete for task {task.name}')
46
48
  job_id, job_state = worker.submit_task(task)
47
49
  log.info(f"Job Submitted '{task.name}' job_id: {job_id} job_state: {job_state}")
48
50
  # place job in queue to monitor
@@ -0,0 +1,61 @@
1
+ """Tests for wf_utils module."""
2
+
3
+ import pytest
4
+ from beeflow.wf_manager.resources import wf_utils
5
+
6
+ from beeflow.tests.mocks import MockWFI
7
+
8
+
9
+ @pytest.mark.parametrize(
10
+ "which_return, no_dag_flag, expected_dot_avail",
11
+ [
12
+ ("/usr/bin/dot", True, True),
13
+ ("/usr/bin/dot", False, True),
14
+ (None, True, False),
15
+ (None, False, False),
16
+ ],
17
+ )
18
+ def test_export_dag(mocker, which_return, no_dag_flag, expected_dot_avail):
19
+ """Regression test export_dag based on graphviz availability."""
20
+ wf_id = "abc123"
21
+ output_dir = "/path/to/out"
22
+ graphmls_dir = "/path/to/gmls"
23
+ workflow_dir = "/path/to/wfdir"
24
+
25
+ mock_wfi = mocker.MagicMock()
26
+ mocker.patch('beeflow.wf_manager.resources.wf_utils.get_workflow_interface', return_value=mock_wfi)
27
+ mocker.patch('beeflow.common.wf_interface.WorkflowInterface.export_graphml')
28
+ mocker.patch('beeflow.wf_manager.resources.wf_utils.shutil.which',
29
+ return_value=which_return)
30
+ mock_update = mocker.patch('beeflow.wf_manager.resources.wf_utils.update_graphml')
31
+ mock_viz = mocker.patch('beeflow.wf_manager.resources.wf_utils.generate_viz')
32
+
33
+ result = wf_utils.export_dag(
34
+ wf_id,
35
+ output_dir,
36
+ graphmls_dir,
37
+ no_dag_flag,
38
+ workflow_dir
39
+ )
40
+
41
+ # always export the GraphML first
42
+ mock_wfi.export_graphml.assert_called_once_with()
43
+
44
+ # return value is bool(shutil.which)
45
+ assert result is expected_dot_avail
46
+
47
+ if expected_dot_avail:
48
+ mock_update.assert_called_once_with(wf_id, graphmls_dir)
49
+ mock_viz.assert_called_once_with(
50
+ wf_id, output_dir, graphmls_dir, no_dag_flag, workflow_dir
51
+ )
52
+ else:
53
+ mock_update.assert_called_once_with(
54
+ wf_id, graphmls_dir, output_dir, no_dag_flag
55
+ )
56
+ mock_viz.assert_not_called()
57
+
58
+
59
+
60
+
61
+
@@ -17,6 +17,7 @@ from beeflow.common.connection import Connection
17
17
  from beeflow.common import paths
18
18
  from beeflow.common.db import wfm_db
19
19
  from beeflow.common.db.bdb import connect_db
20
+ from beeflow.common.deps.neo4j_manager import connect_neo4j_driver
20
21
 
21
22
 
22
23
  log = bee_logging.setup(__name__)
@@ -261,15 +262,6 @@ def schedule_submit_tasks(wf_id, tasks):
261
262
  submit_tasks_tm(wf_id, tasks, allocation)
262
263
 
263
264
 
264
- def connect_neo4j_driver(bolt_port):
265
- """Create a neo4j driver to a gdb through bolt port."""
266
- driver = neo4j_driver.Neo4jDriver()
267
- driver.connect(user="neo4j", bolt_port=bolt_port,
268
- db_hostname=bc.get("graphdb", "hostname"),
269
- password=bc.get("graphdb", "dbpass"))
270
- driver.create_bee_node()
271
-
272
-
273
265
  def setup_workflow(wf_id, wf_name, wf_dir, wf_workdir, no_start, workflow=None, # pylint: disable=W0613
274
266
  tasks=None):
275
267
  """Initialize Workflow in Separate Process."""
@@ -303,8 +295,13 @@ def export_dag(wf_id, output_dir, graphmls_dir, no_dag_dir, workflow_dir=None):
303
295
  """Export the DAG of the workflow."""
304
296
  wfi = get_workflow_interface(wf_id)
305
297
  wfi.export_graphml()
306
- update_graphml(wf_id, graphmls_dir)
307
- generate_viz(wf_id, output_dir, graphmls_dir, no_dag_dir, workflow_dir)
298
+ dot_avail = bool(shutil.which("dot"))
299
+ if dot_avail:
300
+ update_graphml(wf_id, graphmls_dir)
301
+ generate_viz(wf_id, output_dir, graphmls_dir, no_dag_dir, workflow_dir)
302
+ else:
303
+ update_graphml(wf_id, graphmls_dir, output_dir, no_dag_dir)
304
+ return dot_avail
308
305
 
309
306
 
310
307
  def start_workflow(wf_id):
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "hpc-beeflow"
3
- version = "0.1.11dev2"
3
+ version = "0.1.11dev3"
4
4
  description = "A software package for containerizing HPC applications and managing job workflows"
5
5
 
6
6