# EnOSlib: Surviving the ☆homoterogeneous☆ world¶

## 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 your 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.

## The software¶

EnOSlib has been initially developed in the context of the Discovery initiative and is released under the GPLv3 licence. It’s a library written in Python: you are free to import it in your code and cherry-pick any of its functions.

Hint

You can install EnOSlib with pip:

pip install enoslib


For developping EnOSlib or get the in development version:

git clone https://gitlab.inria.fr/discovery/enoslib.git
cd enoslib && pip install -U -e .


## At a glance¶

The tip of the Iceberg featuring Vagrant and Grid’5000 testbed.