Permalink
Browse files

Merge libsubmit into Parsl

Fixes #387, fixes #269.
  • Loading branch information...
annawoodard committed Sep 24, 2018
2 parents 78a3419 + 35f92d2 commit e54c01c960313d93d92686ef17b3a5e33eaf8c67
Showing with 6,391 additions and 50 deletions.
  1. +1 −1 .flake8
  2. +106 −3 .gitignore
  3. +2 −24 README.rst
  4. +0 −1 docs/Makefile
  5. +1 −3 docs/conf.py
  6. +96 −0 docs/devguide/#dev_docs.rst#
  7. +1 −0 docs/devguide/.#dev_docs.rst
  8. +43 −0 docs/devguide/changelog.rst
  9. +6 −1 docs/devguide/design.rst
  10. +76 −10 docs/devguide/dev_docs.rst
  11. +24 −0 docs/index.rst
  12. +3 −0 docs/libsubmit_art/README.txt
  13. BIN docs/libsubmit_art/multi_node.png
  14. +4 −0 docs/libsubmit_art/multi_node.svg
  15. BIN docs/libsubmit_art/multi_worker.png
  16. +4 −0 docs/libsubmit_art/multi_worker.svg
  17. BIN docs/libsubmit_art/single_worker.png
  18. +4 −0 docs/libsubmit_art/single_worker.svg
  19. +77 −0 docs/quick/quickstart.rst
  20. +14 −0 docs/reference.rst
  21. +48 −0 docs/stubs/libsubmit.providers.aws.aws.EC2Provider.rst
  22. +33 −0 docs/stubs/libsubmit.providers.cobalt.cobalt.Cobalt.rst
  23. +33 −0 docs/stubs/libsubmit.providers.condor.condor.Condor.rst
  24. +37 −0 docs/stubs/libsubmit.providers.googlecloud.googlecloud.GoogleCloud.rst
  25. +35 −0 docs/stubs/libsubmit.providers.gridEngine.gridEngine.GridEngine.rst
  26. +24 −0 docs/stubs/libsubmit.providers.jetstream.jetstream.Jetstream.rst
  27. +33 −0 docs/stubs/libsubmit.providers.local.local.Local.rst
  28. +31 −0 docs/stubs/libsubmit.providers.provider_base.ExecutionProvider.rst
  29. +35 −0 docs/stubs/libsubmit.providers.slurm.slurm.Slurm.rst
  30. +33 −0 docs/stubs/libsubmit.providers.torque.torque.Torque.rst
  31. +119 −0 libsubmit/__init__.py
  32. +5 −0 libsubmit/channels/__init__.py
  33. +98 −0 libsubmit/channels/channel_base.py
  34. +128 −0 libsubmit/channels/errors.py
  35. 0 libsubmit/channels/local/__init__.py
  36. +167 −0 libsubmit/channels/local/local.py
  37. 0 libsubmit/channels/ssh/__init__.py
  38. +229 −0 libsubmit/channels/ssh/ssh.py
  39. 0 libsubmit/channels/ssh_il/__init__.py
  40. +78 −0 libsubmit/channels/ssh_il/ssh_il.py
  41. +89 −0 libsubmit/error.py
  42. +12 −0 libsubmit/launchers/__init__.py
  43. +314 −0 libsubmit/launchers/launchers.py
  44. +31 −0 libsubmit/providers/__init__.py
  45. 0 libsubmit/providers/aws/__init__.py
  46. +705 −0 libsubmit/providers/aws/aws.py
  47. +17 −0 libsubmit/providers/aws/template.py
  48. 0 libsubmit/providers/azure/__init__.py
  49. +200 −0 libsubmit/providers/azure/azure.py
  50. +15 −0 libsubmit/providers/azure/azureconf.json
  51. +100 −0 libsubmit/providers/azure/deployer.py
  52. +209 −0 libsubmit/providers/cluster_provider.py
  53. 0 libsubmit/providers/cobalt/__init__.py
  54. +238 −0 libsubmit/providers/cobalt/cobalt.py
  55. +15 −0 libsubmit/providers/cobalt/template.py
  56. 0 libsubmit/providers/condor/__init__.py
  57. +297 −0 libsubmit/providers/condor/condor.py
  58. +28 −0 libsubmit/providers/condor/template.py
  59. 0 libsubmit/providers/googlecloud/__init__.py
  60. +265 −0 libsubmit/providers/googlecloud/googlecloud.py
  61. 0 libsubmit/providers/grid_engine/__init__.py
  62. +230 −0 libsubmit/providers/grid_engine/grid_engine.py
  63. +12 −0 libsubmit/providers/grid_engine/template.py
  64. 0 libsubmit/providers/jetstream/__init__.py
  65. +144 −0 libsubmit/providers/jetstream/jetstream.py
  66. +43 −0 libsubmit/providers/jetstream/setup_first_time.sh
  67. 0 libsubmit/providers/kubernetes/__init__.py
  68. +265 −0 libsubmit/providers/kubernetes/kube.py
  69. +4 −0 libsubmit/providers/kubernetes/template.py
  70. 0 libsubmit/providers/local/__init__.py
  71. +206 −0 libsubmit/providers/local/local.py
  72. +91 −0 libsubmit/providers/provider_base.py
  73. 0 libsubmit/providers/slurm/__init__.py
  74. +224 −0 libsubmit/providers/slurm/slurm.py
  75. +16 −0 libsubmit/providers/slurm/template.py
  76. 0 libsubmit/providers/torque/__init__.py
  77. +18 −0 libsubmit/providers/torque/template.py
  78. +253 −0 libsubmit/providers/torque/torque.py
  79. +2 −0 libsubmit/tests/setup_path.sh
  80. +5 −0 libsubmit/tests/test_channels/remote_run.sh
  81. +17 −0 libsubmit/tests/test_channels/test_channels.py
  82. +42 −0 libsubmit/tests/test_channels/test_local_channel.py
  83. +49 −0 libsubmit/tests/test_channels/test_scp_1.py
  84. +49 −0 libsubmit/tests/test_channels/test_ssh_1.py
  85. +57 −0 libsubmit/tests/test_channels/test_ssh_errors.py
  86. +41 −0 libsubmit/tests/test_channels/test_ssh_file_transport.py
  87. +24 −0 libsubmit/tests/test_channels/test_ssh_interactive.py
  88. +58 −0 libsubmit/tests/test_integration/test_ssh/test_ssh_beagle.py
  89. +61 −0 libsubmit/tests/test_integration/test_ssh/test_ssh_condor_earth.py
  90. +55 −0 libsubmit/tests/test_integration/test_ssh/test_ssh_cori.py
  91. +55 −0 libsubmit/tests/test_integration/test_ssh/test_ssh_swan.py
  92. +105 −0 libsubmit/tests/test_providers/ec2/test_ec2.py
  93. +83 −0 libsubmit/utils.py
  94. +4 −0 libsubmit/version.py
  95. +8 −1 requirements.txt
  96. +5 −4 setup.py
  97. +2 −2 test-requirements.txt
View
@@ -11,4 +11,4 @@
# E402: module level import not at top of file
ignore = D203, E124, E126, F403, F405, F811, E402
max-line-length = 160
exclude = parsl/executors/serialize/, parsl/libsubmit/, test_import_fail.py
exclude = parsl/executors/serialize/
View
@@ -1,10 +1,113 @@
*~
*.pyc
build/*
dist/*
parsl.egg-info/*
.scripts
.*out
.*err
*log
.ipynb_checkpoints
.ipynb_checkpoints
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# dotenv
.env
# virtualenv
.venv
venv/
ENV/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
# emacs buffers
\#*
View
@@ -59,31 +59,9 @@ For Developers
Requirements
============
Parsl requires the following:
* Python 3.5+
* Jupyter (for running tutorial notebooks), with Python3.5+ kernel
For testing:
* nose
* coverage
For building documentation:
* nbsphinx
* sphinx
* sphinx_rtd_theme
Parsl is supported in Python 3.5+. Requirements can be found `here <requirements.txt>`_. Requirements for running tests can be found `here <test-requirements.txt>`_.
Contributing
============
We welcome contributions from the community. Please see our `contributing guide <CONTRIBUTING.rst>`_.
Citation
========
If you use Parsl, please cite:
Babuji, Yadu, Brizius, Alison, Chard, Kyle, Foster, Ian, Katz, Daniel S., Wilde, Michael, & Wozniak, Justin. (2017, August 30). Introducing Parsl: A Python Parallel Scripting Library. Zenodo. https://doi.org/10.5281/zenodo.853492
We welcome contributions from the community. Please see our `contributing guide <CONTRIBUTING.rst>`_.
View
@@ -1,5 +1,4 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
View
@@ -21,7 +21,6 @@
import sys
import requests
sys.path.insert(0, os.path.abspath('../'))
sys.path.insert(0, os.path.abspath('../parsl/libsubmit'))
import parsl
# -- General configuration ------------------------------------------------
@@ -61,7 +60,6 @@ def linkcode_resolve(domain, info):
intersphinx_mapping = {
'python': ('https://docs.python.org/3', None),
'libsubmit': ('https://libsubmit.readthedocs.io/en/stable', None)
}
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
@@ -290,7 +288,7 @@ def linkcode_resolve(domain, info):
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'Parsl.tex', 'Parsl Documentation',
'Yadu Nand Babuji', 'manual'),
'The Parsl Team', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
@@ -0,0 +1,96 @@
Developer Documentation
***********************
.. automodule:: libsubmit
:no-undoc-members:
.. autofunction:: set_stream_logger
.. autofunction:: set_file_logger
ExecutionProviders
------------------
An execution provider is basically an adapter to various types of execution resources. The providers abstract
away the interfaces provided by various systems to request, monitor, and cancel computate resources.
.. autoclass:: libsubmit.execution_provider_base.ExecutionProvider
:members: __init__, submit, status, cancel, scaling_enabled, channels_required
Slurm
^^^^^
.. autoclass:: libsubmit.providers.slurm.slurm.Slurm
:members: __init__, submit, status, cancel, _status, scaling_enabled, _write_submit_script, current_capacity, channels_required
Cobalt
^^^^^^
.. autoclass:: libsubmit.providers.cobalt.cobalt.Cobalt
:members: __init__, submit, status, cancel, _status, scaling_enabled, _write_submit_script, current_capacity, channels_required
Condor
^^^^^^
.. autoclass:: libsubmit.providers.condor.condor.Condor
:members: __init__, submit, status, cancel, _status, scaling_enabled, _write_submit_script, current_capacity, channels_required
Torque
^^^^^^
.. autoclass:: libsubmit.providers.torque.torque.Torque
:members: __init__, submit, status, cancel, _status, scaling_enabled, _write_submit_script, current_capacity, channels_required
Local
^^^^^
.. autoclass:: libsubmit.providers.local.local.Local
:members: __init__, submit, status, cancel, scaling_enabled, current_capacity, channels_required
AWS
^^^
.. autoclass:: libsubmit.providers.aws.aws.EC2Provider
:members: __init__, submit, status, cancel, scaling_enabled, current_capacity, channels_required, create_vpc, read_state_file, write_state_file, create_session, security_group
Channels
--------
For certain resources such as campus clusters or supercomputers at research laboratories, resource requirements
may require authentication. For instance some resources may allow access to their job schedulers from only
their login-nodes which require you to authenticate on through SSH, GSI-SSH and sometimes even require
two factor authentication. Channels are simple abstractions that enable the ExecutionProvider component to talk
to the resource managers of compute facilities. The simplest Channel, *LocalChannel* simply executes commands
locally on a shell, while the *SshChannel* authenticates you to remote systems.
.. autoclass:: libsubmit.channels.channel_base.Channel
:members: execute_wait, script_dir, execute_no_wait, push_file, close
LocalChannel
^^^^^^^^^^^^
.. autoclass:: libsubmit.channels.local.local.LocalChannel
:members: __init__, execute_wait, execute_no_wait, push_file, script_dir, close
SshChannel
^^^^^^^^^^^^
.. autoclass:: libsubmit.channels.ssh.ssh.SshChannel
:members: __init__, execute_wait, execute_no_wait, push_file, pull_file, script_dir, close
SshILChannel
^^^^^^^^^^^^
.. autoclass:: libsubmit.channels.ssh_il.ssh_il.SshILChannel
:members: __init__, execute_wait, execute_no_wait, push_file, pull_file, script_dir, close
Launchers
---------
Launchers are basically wrappers for user submitted scripts as they are submitted to
a specific execution resource.
.. autofunction:: libsubmit.launchers.singleNodeLauncher
@@ -482,3 +482,46 @@ Bug Fixes
^^^^^^^^^
* Initial release, no listed bugs.
Changelog
=========
Libsubmit 0.4.1
---------------
Released. June 18th, 2018.
This release folds in massive contributions from @annawoodard.
New functionality
^^^^^^^^^^^^^^^^^
* Several code cleanups, doc improvements, and consistent naming
* All providers have the initialization and actual start of resources decoupled.
Libsubmit 0.4.0
---------------
Released. May 15th, 2018.
This release folds in contributions from @ahayschi, @annawoodard, @yadudoc
New functionality
^^^^^^^^^^^^^^^^^
* Several enhancements and fixes to the AWS cloud provider (#44, #45, #50)
* Added support for python3.4
Bug Fixes
^^^^^^^^^
* Condor jobs left in queue with X state at end of completion `issue#26 <https://github.com/Parsl/libsubmit/issues/26>`_
* Worker launches on Cori seem to fail from broken ENV `issue#27 <https://github.com/Parsl/libsubmit/issues/27>`_
* EC2 provider throwing an exception at initial run `issue#46 <https://github.com/Parsl/parsl/issues/46>`_
View
@@ -1,5 +1,4 @@
Design and Rationale
====================
@@ -162,3 +161,9 @@ table of our initial target systems as of Mar 3rd, 2017 :
+----------------------------------------+----------+----------+----------+
| Beagle | X | | |
+----------------------------------------+----------+----------+----------+
=======
Design
======
Under construction.
Oops, something went wrong.

0 comments on commit e54c01c

Please sign in to comment.