Metadata-Version: 2.4
Name: enoslib
Version: 10.5.0
Summary: A library to build (distributed) systems experiments
Home-page: https://discovery.gitlabpages.inria.fr/enoslib/
Author: Matthieu Simonin
Author-email: matthieu.simonin@inria.fr
Keywords: evaluation,reproducible research,Grid5000
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.9
License-File: LICENSE.txt
Requires-Dist: enoslib-ansible<11,>=4
Requires-Dist: cryptography
Requires-Dist: jsonschema<5,>=3.0.0
Requires-Dist: netaddr~=0.8.0
Requires-Dist: requests[socks]
Requires-Dist: rich~=12.0.0
Requires-Dist: sshtunnel>=0.3.1
Requires-Dist: packaging>=21.3
Requires-Dist: python-grid5000<2.0.0,>=1.2.3
Provides-Extra: all
Requires-Dist: python-chi~=0.17; extra == "all"
Requires-Dist: python-glanceclient<4.0.0; extra == "all"
Requires-Dist: python-openstackclient<6.0.0; extra == "all"
Requires-Dist: python-neutronclient<8.0.0; extra == "all"
Requires-Dist: python-blazarclient<4.0.0,>=1.1.1; extra == "all"
Requires-Dist: python-cinderclient<9.0.0; extra == "all"
Requires-Dist: openstacksdk<=1.4.0; extra == "all"
Requires-Dist: iotlabcli>=3.2.1; extra == "all"
Requires-Dist: iotlabsshcli>=1.0.0; extra == "all"
Requires-Dist: python-vagrant>=0.5.15; extra == "all"
Requires-Dist: distem~=0.0.0; extra == "all"
Requires-Dist: fabrictestbed-extensions<2; extra == "all"
Provides-Extra: chameleon
Requires-Dist: python-chi~=0.17; extra == "chameleon"
Requires-Dist: python-glanceclient<4.0.0; extra == "chameleon"
Requires-Dist: python-openstackclient<6.0.0; extra == "chameleon"
Requires-Dist: python-neutronclient<8.0.0; extra == "chameleon"
Requires-Dist: python-blazarclient<4.0.0,>=1.1.1; extra == "chameleon"
Requires-Dist: python-cinderclient<9.0.0; extra == "chameleon"
Requires-Dist: openstacksdk<=1.4.0; extra == "chameleon"
Provides-Extra: fabric
Requires-Dist: fabrictestbed-extensions<2; extra == "fabric"
Provides-Extra: iotlab
Requires-Dist: iotlabcli>=3.2.1; extra == "iotlab"
Requires-Dist: iotlabsshcli>=1.0.0; extra == "iotlab"
Provides-Extra: vagrant
Requires-Dist: python-vagrant>=0.5.15; extra == "vagrant"
Provides-Extra: distem
Requires-Dist: distem~=0.0.0; extra == "distem"
Provides-Extra: silecs
Requires-Dist: iotlabcli>=3.2.1; extra == "silecs"
Requires-Dist: iotlabsshcli>=1.0.0; extra == "silecs"
Provides-Extra: jupyter
Requires-Dist: rich[jupyter]~=12.0.0; extra == "jupyter"
Provides-Extra: analysis
Requires-Dist: pandas; extra == "analysis"
Provides-Extra: dev
Requires-Dist: flake8>=3.3.0; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: freezegun>=1.2.1; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: mock>=2.0.0; extra == "dev"
Requires-Dist: ddt>=1.1.0; extra == "dev"
Requires-Dist: sphinx; extra == "dev"
Requires-Dist: pydata-sphinx-theme; extra == "dev"
Requires-Dist: autodocsumm; extra == "dev"
Requires-Dist: nbsphinx; extra == "dev"
Requires-Dist: sphinx-design; extra == "dev"
Requires-Dist: sphinx-jsonschema; extra == "dev"
Requires-Dist: requests[socks]; extra == "dev"
Requires-Dist: mypy==1.14.1; extra == "dev"
Requires-Dist: ipdb; extra == "dev"
Requires-Dist: pylint; extra == "dev"
Dynamic: license-file

**************************************************
EnOSlib: Surviving the ☆homoterogeneous☆ world
**************************************************

|Code| |Doc| |Build Status| |License| |Pypi| |Pepy| |Chat| |SW|


What the ☆homoterogeneous☆ ?
----------------------------

Distributed systems practitioners on bare-metal testbeds know it: resources
(e.g. computes, networks) on a bare-metal infrastructure may have these slight
differences between each other that experimental code can become hairy. For
such code, achieving practical portability (e.g changing the infrastructure
parameters) is thus a tedious time consuming task.


☆Homoterogeneous☆ has been coined to express the gap between the idea
we have of a computing infrastructure, where resources have
static/predictable setup, and the reality of interacting with them on a daily
basis.

In this context, EnOSlib smoothes the experimental code and can

- deal with various platforms (e.g. local machine, scientific testbed, virtualized environments)
- interact programmatically with different remote resources: compute
  (servers, containers) and networks (ipv4, ipv6)
- deploy *ready-to-use* experimentation services (e.g instrumentation, observability tools).
- emulate complex network topologies (e.g for your FOG experiments)
- integrate your code with interactive development environment like Jupyter.


.. |Code| image:: https://img.shields.io/badge/code-gitlab-orange
   :target: https://gitlab.inria.fr/discovery/enoslib

.. |Doc| image:: https://img.shields.io/badge/documentation-enoslib-blue
   :target: https://discovery.gitlabpages.inria.fr/enoslib/index.html

.. |Build Status| image:: https://gitlab.inria.fr/discovery/enoslib/badges/main/pipeline.svg
   :target: https://gitlab.inria.fr/discovery/enoslib/pipelines

.. |License| image:: https://img.shields.io/badge/License-GPL%20v3-blue.svg
   :target: https://www.gnu.org/licenses/gpl-3.0

.. |Pypi| image:: https://badge.fury.io/py/enoslib.svg
   :target: https://badge.fury.io/py/enoslib

.. |Pepy| image:: https://pepy.tech/badge/enoslib/week
   :target: https://pepy.tech/project/enoslib


.. |Chat| image:: https://img.shields.io/badge/mattermost-enoslib-blueviolet
   :target: https://framateam.org/enoslib/channels/town-square

.. |SW| image:: https://archive.softwareheritage.org/badge/origin/https://gitlab.inria.fr/discovery/enoslib.git/
    :target: https://archive.softwareheritage.org/browse/origin/?origin_url=https://gitlab.inria.fr/discovery/enoslib.git
