⚒️ Changelog#
Stable branch#
10.0.0#
Breaking#
Packaging: To reduce dependencies, the default pip package no longer includes Jupyter support. - To use EnOSlib in a Jupyter notebook, you should install the new pip package extra:
enoslib[jupyter]
.Ansible: Add support for Ansible 8, 9 and 10 (corresponding to ansible-core 2.15, 2.16 and 2.17). - Be aware that Ansible now requires at least Python 3.10 on the control node, and Python 3.7 on the target nodes (see Ansible support Matrix). - To support older versions of Python, you can install a specific version of Ansible. - Example to force Ansible 8 (ansible-core 2.15):
pip install 'enoslib>=10,<11' 'enoslib-ansible>=8,<9'
Oldstable branch (supported)#
9.3.0#
VMonG5K: Allow to pass
project
name in the configurationG5k: Add support for multi-site reservation date
VMonG5K: Fix support for extra disk attached to VMs (#208)
9.2.1#
Workaround
docker
python binding issue with latestrequests
.
9.2.0#
G5K: When specifying a list of servers in the configuration, allow to get nodes on only a subset of them.
Docker: allow to force/prevent installation of nvidia-container-toolkit
Docker: don’t use sudo to install nvidia-toolkit
9.1.0#
Docker: allow to install a specific version of Docker daemon for reproducibility
9.0.2#
Don’t constrain upper version of
packaging
dependency
9.0.0#
Breaking#
Core: Limit the number of installed Ansible Collections: EnOSlib is now shipped only with
ansible.posix
,community.docker
,community.libvirt
All Providers: Change default Ansible fork level from 100 to 5
VMonG5K: Remove the gateway provider parameter (replaced by
g5k_auto_jump
)
Added#
Services: 🚀 Add a new service
PlanningService
that allows to schedule events on different machinesAll Providers: Allow to configure the fork level of Ansible
VMonG5K: Use the global g5k_auto_jump setting to setup SSH jump host for VMs
Documentation#
Document
name
parameter ofProvider
VMonG5K: Document a simpler way to control VM allocation
8.4.0#
Added#
Docker: allow to force/prevent installation of nvidia-container-toolkit
G5K: allow to reserve only a subset of a list of specific nodes
Fixed#
Docker: don’t use sudo to install nvidia-toolkit
8.3.1#
Fixed#
Don’t constrain upper version of
packaging
dependency
8.3.0#
Added#
Docker: allow to install a specific version of Docker daemon for reproducibility
8.2.1#
Fixed#
Fixed tests failure due to an incomplete backport
8.2.0#
Added#
VMonG5K: Consider memory when allocating VMs on physical hosts
G5K: Allow “day” and “night” as job types
Fixed#
VMonG5K: Fix VM allocation algorithm for very large VM sizes
8.1.6#
Fixed#
Chameleon: Constrain OpenStack dependencies to maintain Python 3.7 compatibility
G5K: Fix missing nodes in deploy edge case
G5K: Fix env_version handling, it was only applied when force_deploy is true
G5K: Fix
inside_g5k
method to detect usage from a machine inside G5K network.G5K: Make site listing aware of excluded sites
Monitoring service: Fix crash when nodes have multiple IPv6 addresses
8.1.5#
Added#
Dependencies: Allow minor version updates of Ansible
Fixed#
G5k: Fix race condition when destroying and reloading jobs
VMonG5K: Make VM to host allocation deterministic
AccurateNetemHTB: Improve error message when the computed latency is negative
8.1.4#
Added#
VMonG5K: Add new parameter vcore_type to give more control on the VM allocation algorithm. By default, it allocates vCPUs based on the number of physical hyper-threads.
Fixed#
G5k: Fix number of cores for multi-CPU nodes
G5K: Fix DHCP at end of deployment when python interpreter is not found
All: Remove python3 interpreter override. This allows to support CentOS nodes. It might change the python interpreter to python2 for old Ansible versions (2.9, 2.10, 3, 4)
Packaging: Remove runtime dependency on setuptools
8.1.3#
Fixed#
G5k:
G5KTunnel
can be given a local portVMonG5K: Fix time in the VM
8.1.2#
Fixed#
Docker: support Docker v23 deployment
8.1.1#
Fix: multisites deployment
8.1.0#
Added#
G5K: automatically use
access.grid5000.fr
to avoid needing a local SSH config (can be disabled using the config)G5K: allow to deploy a specific version of an environment
Docker: allow to login to Docker hub (to access private images or to bypass rate-limiting)
K3S: allow to specify which version to install
Fixed#
K3S: fix setup for K3S >= 1.24
Changed#
Big typing improvements
Enforce
isort
pre-commit hookAdvertise support for Ansible 7
8.0.0#
Added#
🚀
Providers
: a provider that can sync resources on multiple platforms
General changes#
Python 3.10 support
Introduce provider-specific pip packages to make dependencies optional. The base
enoslib
package now only supports Grid’5000, but you can install the following pip package variants:enoslib[vagrant]
,enoslib[chameleon]
,enoslib[iotlab]
,enoslib[distem]
, orenoslib[all]
for everything.Increase the supported Ansible version range (>=2.9,<=6.3)
New providers features#
g5k: use standard Grid’5000 environment by default instead of deploying a
debian11-nfs
image:this is the same behaviour as the (now deprecated)
allow_classic_ssh
job typethis new default behaviour is much faster to provision and matches the behaviour of native Grid’5000 tools
however, this might impact your experiments because the standard environment comes with many more tools than
debian11-nfs
if you want accurate control on the software environment, you should always use the
deploy
job type
g5k: env name is now required when using the
deploy
job typeg5k: simplify configuration by auto-configuring primary network if not specified
g5k: add support for reservable disks
g5k:
provider.destroy()
can now wait for a state change (usewait=True
)g5k: expose the jobs through the
provider.jobs
propertyg5k: Introduce
enable_home_for_job()
andenable_group_storage()
to allow to mount NFS storage provided by Grid’5000 (either user home or a group storage)g5k: Add support for
container
OAR job types.g5k: Add support for
besteffort
OAR queue.vmong5k: support multisite deployment.
Providers fixes#
g5k: fix global kavlan configuration: when a node was located on another site as the global kavlan network, it was not actually put in the kavlan network (calls to the Kavlan API were silently failing).
g5k: fix missing nodes in roles when using multi-sites deployments
g5k: use new Providers mechanism for multi-sites reservations. This fixes several issues with multi-sites experiments:
only relevant sites are queried
partial job reloading now works as expected (e.g. reloading a job on one site while creating a new job on another site)
g5k: fix an issue on the reservation date preventing multisite deployment
g5k: reduce number of log entries printed at the info level
g5k: fix misleading deployment logging
Services#
Netem: Introduce
AccurateNetemHTB
to apply more accurate network latency between node. This takes into account the physical delay of targeted pathsNetemHTB: add support for constraints on IPv6 addresses
NetemHTB: loss parameter is explicitly a percentage
Netem: Introduce
fping_stats
static method to read from the backuped file easily after a call tovalidate
.k3s: refresh service (deploy the dashboard automatically)
Library#
api: change
ensure_python3()
to pull fewer Debian packages (onlypython3
itself)api: change default behaviour of
ensure_python3()
to no longer create apython -> python3
symlink by default.api: add
check()
function to validate basic functionality of Enoslibapi:
actions()
can now take fqdn names (e.g.ansible.builtin.shell
). This allows for using any third party Ansible modules.api:
actions()
can now takes the top-levelvars
options.Host: expose
get_extra()
,set_extra()
, andreset_extra()
methods to manipulate the extra vars of the host.Remove warning about empty host list (Ansible>=2.11 only)
Documentation#
vmong5k: document how to mount home directory or group storage on the VMs
chameleon: update chameleon tutorial with an edge-to-cloud example
g5k: update all Grid’5000 tutorials to be more progressive and to showcase new features
enoslib-tutorials is now a standalone repo (imported as submodule here)
they-use-it: add hal-03654722, 10.1109/CCGrid54584.2022.00084
Internals#
all: Provider(s) can now take a name
all: introduce
test_slot
,set_reservation
at the interface level (prepare multi-provider experiment). This will test if a slot (time x resource) can be started on the corresponding platformiotlab: Implement
test_slot
(non naïve implementation)g5k: Implement
test_slot
(non naïve implementation)g5k: remove Execo dependency
CI: use pylint and type checking to improve static analysis
Unsupported versions#
7.2.1#
jupyter is an optional dependency (if you want to have rich output)
pip install enoslib[jupyter]
7.2.0#
Upgrade and relax Ansible possible versions (from 3.X to 5.X)
API: fix a wrong inheritance that prevents
stdout_callback
to be taken into account.Config: Introduce
pimp_my_lib
boolean config key to enforce a special stdout_callback based on rich. The rationale is to have nicer and more compact outputs for Ansible tasks (e.g.api.actions
andapi.run*
)Add an optional dependency
jupyter
to install extra library dedicated to running EnOSlib from Jupyter.API: Introduce an
init_logging
function: setup a good-enough logging mecanism.Config: add a
dump_results
key to enable remote actions result collection in a file.Dstat: add an
to_pandas
static method to load all the metrics previously backuped to pandas. This avoids to know the internal directory structures EnOSlib uses.VMonG5K: Allow to specify the domain type (
kvm
for hardware assisted virtualizaton /qemu
full emulation mode)VMonG5K: Allow to specify a reservation date
7.1.2#
IOTlab: support for RPI3 added
G5k: firewall context manager clean the firewall rules when an exception is raised.
Conda: introduce
conda_from_env
to infer conda prefix location and current environment from environmental variablesDocker: adapt to debian11
7.1.1#
api: Results exposes a to_dict method (purpose is to json serialize)
7.1.0#
G5k: add reconfigurable firewall facilities (see provider doc). This allows to create an opening rule and delete it later.
api: custom stdout callback is now use as a regular plugin. This allows to confgure the stdout plugin using the Ansible configuration file
7.0.1#
svc/skydive: update to new Roles datastructure
7.0.0#
Introduce a way to configure the library. For now this can be used to control the cache used when accessing the G5k API.
- Jupyter integration
Provider configuration, roles and networks can be displayed in a rich format in a jupyter notebook
There is an ongoing effort to port such integration in various part of the library
api/objects: introduce
RolesLike
type: something that looks like to some remote machines. More precisely, it’s a Union of some types: aHost
, a list of Host or a plain-oldRoles
datastructure. It’s reduce the number of function of the API since function overloading isn’t possible in Python.api:run_command: can now use
raw
connections (no need for python at the dest)api: introduce bg_start, bg_stop that generates the command for starting/stopping backgroung process on the remote nodes. see also below
api: introduce background keyword. It serves the same purpose of bg_start/end but is more generic in the sense that many modules can benefit from the keyword and it doesn’t have any dependencies. Under the hood this will generate an async Ansible tasks with infinite timeout.
api:
populate_keys
: make sure the public key is added only once to the remote authorized_keyssvc/dstat: make it a context manager, adapt the examples
svc/tcpdump: make it a context manager, adapt the examples
svc/locust: update to the latest version. align the API to support parameter-less
deploy
method (runheadless
by default)Doc: they-use-it updated
- g5k: NetworkConf doesn’t need an id anymore.
The
id
is still mandatory when using a dictionnary to build the whole configuration.
6.2.0#
svc/docker: now installs nvidia-container-toolkit if deemed relevant (on nodes that have a NVidia GPU card).
svc/monitoring: now configures an nvidia-smi input on nodes that have a NVidia GPU card and the nvidia container runtime. Add an example to show how to make both service together to get some GPU metrics in the collector.
docs: fixed missing network selection in
tuto_svc_netem_s.py
jinja2 3.x compatibility
Possibly breaking:
We’ve relaxed the Ansible version that is pulled when installing EnOSlib. Version ranging from Ansible 2.9 to Ansible 4 (excluded) are now accepted. There’s a potential risk that some corner cases are broken (nothing bad has been detected though … 🤞) This was necessary to get benefit from the latest modules version. EnOSlib can benefit from any (third party or updated core) collections installed locally.
6.1.0#
Breaking:
svc/netem-htb: Rework on the various service APIs. Now the user can use a builder pattern to construct its network topology with Netem and NetemHTB. Check the examples to see how it looks like. Unfortunately this breaks the existing APIs.
Misc:
provider: Openstack provider fixed
api: add
run_once
anddelegate_to
keywordsapi: add
populate_keys
that populate ssh keys on all hosts (use case: MPI applications that needs to all hosts to be ssh reachable)tasks: env implements
__contains__
(resp.setdefault
) to check if a key is in the env (resp. set a default value) (cherry-pick from 5.x)svc/monitoring: remove the use of explicit
become
in the deployment
6.0.4#
svc/docker: allow to specify a port (cherry-pick from 5.x)
doc: fix typo + some improvements (emojis)
api/play_on: now accepts an Ansible Inventory (cherry-pick from 5.x)
6.0.3#
svc:netem: fix an issue with missing self.extra_vars
svc:monitoring: stick to influxdb < 2 for now (influxdb2 requires an auth)
6.0.2#
doc/G5k: Add an example that makes use of the internal docker registries of Grid’5000
6.0.1#
doc: install instructions on the front page
doc/G5k: Document G5kTunnel
6.0.0 (the IPv6 release and plenty other stuffs)#
Beware this versions has breaking changes in various places
Networks from the various providers deserved a true abstraction: it’s done.
provider.init
now returns two similar data structures: Compute roles (akaroles
) and networks roles (aka networks
). Both are dictionnaries ofHost
(resp.Networks
) indexed by the user provided tags.Networks returned by a provider encompass IPv4 and IPv6 networks. User can filter them afterwards based on the wanted type. For instance a user reserving a vlan on Grid’5000 will be given two networks corresponding to the IPv4 kavlan network and its IPv6 counterpart.
Most of services have been updated to support the above change.
Introduce
enoslib.objects
to organise library level objects. You’ll find thereHost
andNetwork
data structure and some other objects definitions.Host
now have anet_devices
andprocessor
attributes. These attributes is populated bysync_info
API function with the actual network devices information (IPv4/IPv6 addresses, device type…) and processor information.Host
now have aprocessor
attribute. This attribute is populated bysync_info
API function with the actual processor information (number of cores, number of threads…)Netem service has been split in two parts. First, you can enforce in and out limitations on remote NIC cards (see
netem
module). Ingress limitations use virtual ifbs. Second do the same but allow to add filters (based on Hierarchical Token Bucket) on the queuing discipline to set heterogeneous limitations on a single NIC card (seehtb
module).API:
discover_networks
is nowsync_info
as it syncs more than networks.API:
wait_for
is the new name forwait_ssh
. The rationale is that we actually defer the connection to one Ansible plugin (which may or may not be the SSH plugin)API:
run_ansible
implements a retry logic independent to the connection plugin used.API: functions that calls
run_ansible
now accepts keyword arguments that are passed down the stack (instead of being explicit). This includesextra_vars``ansible_retries
.Introduce
enoslib.docker
module to manage docker containers as first class citizens. In particular,DockerHost
is a specialization ofHost
.Introduce
enoslib.local
to manage the local machine as an EnOSlib host.Providers: Any provider can now be used using a context manager. The resources will be release when leaving the context.
Documentation has been reorganized and now uses a new theme (pydata-sphinx-theme)
Note that the Openstack provider is broken currently.
5.5.4#
tasks: env implements
__contains__
(resp.setdefault
) to check if a key is in the env (resp. set a default value)
5.5.3#
api:
play_on
can be called with an inventory file
5.5.2#
svc/docker: allow to specify a port
5.5.1#
G5k: support for
exotic
job type. If you want to reserve a node on exotic hardware, you can pass eitherjob_type=[allow_classic_ssh, exotic]
orjob_type=[deploy, exotic]
. Passing a single string tojob_type
is also possible (backward compatibility)
5.5.0#
🎉 New provider 🎉: Iotlab provides resources on https://www.iot-lab.info/.
Reserve nodes and run some actions (radio monitoring, power consumption, run modules on A8 nodes)
Connection between Grid’5000 and Fit:
Using Grid’5000 VPN: allow bi-redirectionnal communication over IPv4
Using IPv6: allow transparent communication between both platform (limitation: connection established from Fit to G5k are currently dropped)
Monitoring Service:
The monitoring stack can span both Grid’5000 (ui, collector, agents) and Fit platform (agents only).
-✨ New Dask Service ✨: Deploy a Dask cluster on your nodes.
Replace the former Dask Service and allow for on demand computation (just in time deployment.)
Example updated accordingly
G5k: G5kTunnel context manager to automatically manage a tunnel from your current machine to Grid’5000 machines.
5.4.3#
G5k: returned Host.address was wrong when using vlans
Doc: fix execo url
5.4.2#
Doc: G5k change tutorial URL
G5k: Align the code with the new REST API for vlans (need python-grid5000 >= 1.0.0)
5.4.1#
Service/docker: swarm support
5.4.0#
Support
from enoslib import *
- G5k: surgery in the provider: dictectomy.
extra: allow job inspection through
provider.hosts
andprovider.networks
- G5k: reservation at the server level is now possible
Use case: you need a specific machine (or certain number of machines over a specific set of machines)
G5k: configuration can take the project as a key
Doc: G5k uniformize examples
5.3.4#
G5k: make the project configurable (use the project key in the configuration)
5.3.3#
G5k: fix an issue when dealing with global vlans
5.3.2#
VMonG5k: resurrect nested kvm
5.3.1#
Doc: Add E2Clab
5.3.0#
Service/dstat: migrate to
dool
as adstat
alternativeFix Ansible 2.9.11 compatibility
5.2.0#
Api: Add
get_hosts(roles, pattern_hosts="all")
to retrieve a list of host matching a patternDoc: Fix netem example inclusion
5.1.3#
Tasks: Fix an issue with predefined env creation
Service/dstat: Fix idempotency of deploy
5.1.2#
Tasks: automatic
env_name
change to remove colons from the name
5.1.1#
Netem: Better support for large deployment (introduce chunk_size parameter)
5.1.0#
- Tasks:
review the internal of the implementation
support for nested tasks added
- Doc:
Add autodoc summary in the APIs pages (provided by autodocsumm)
Align some examples with the new Netem implementation
5.0.0#
Upgrade Ansible to 2.9 (python 3.8 now supported)
Service/conda: new service to control remote conda environments. Introduce conda_run_command (resp. conda_play_on) that wraps api.run_command (resp. api.play_on) and launch commands (resp. modules) in the context of an conda environment.
Service/dask: deploy a Dask cluster (use the Conda service)
- VMonG5K:
allow to attach an extra disk to the virtual machines
improve documentation.
Service/SimpleNetem: A simplified version of the Netem Service that sets homogeneous constraints on hosts.
- Service/Netem:
Fix an issue when the interface names contains a dash.
Fix: symetric: False wasn’t taken into account
Speed up the rules deployment (everything is pre-generated on python side)
- (BREAKING): Netem Schema
groups or except keys are now mandatory in the decription
enable key has been removed.
Api: Add when in the top-level kwargs of play_on modules.
Service/dstat: use a named session.
4.11.0#
- Service/docker:
Allow to mount the whole docker dir elsewhere (e.g in /tmp/docker instead of /var/lib/docker)
Default to registry:None, meaning that this will deploy independent docker daemons
4.10.1#
Service/dstat: doc
service/monitoring: typecheck
4.10.0#
Service/dstat: add a new dstat monitoring
Doc: some fixes (comply with the discover_networks)
4.9.4#
Doc: some fixes
4.9.3#
Doc: some fixes / add a ref
4.9.2#
Doc: add some refs in they-use-it.rst
4.9.1#
Fix: include the missing BREAKING change of 4.9.0
4.9.0#
Doc: Add a ref
Service/locust: Fix density option
Service/Netem: support for bridged networks
Api/BREAKING: discover_networks doesn’t have side effects anymore on the hosts.
4.8.12#
Doc: Simplify network emulation example
4.8.11#
VMonG5K: Don’t fail if #pms > #vms
Doc: add madeus-openstack-benchmarks
Service/locust: review, add a density option that controls the number of slave to start on each node.
Doc: Expose the Locust documentation
4.8.10#
Service/monitoring: allow for some customisations
VMonG5K: use the libvirt directory for all the operations
4.8.9#
Service/netem: fix validate when network is partitioned
4.8.8#
Doc: Add content for quick access
Doc: Add parameters sweeper tutorial
4.8.7#
Doc: clean and use continuation line
Service/docker: remove useless statement
4.8.6#
Api/play_on: don’t gather facts twice
VMonG5k: 🐎 enable virtio for network device 🐎
Service/monitoring: add the influxdb datasource automatically
4.8.5#
Api: Introduce
ensure_python[2,3]
to make sure python[2,3] is there and make it the default version (optionally)Api:
wait_ssh
now uses the raw moduleApi: rename some prior with a double underscore (e.g.
__python3__
)
4.8.4#
Doc: Handling of G5k custom images
Host: Implementation of the __hash__() function
API:
play_on
offers new strategies to gather Ansible factstype: Type definitions for Host, Role and Network
4.8.3#
G5K/api: job_reload_from_name fix for anonymous user
Doc: some cleaning, advertise mattermost channel
4.8.2#
VMonG5K: some cleaning
Host: copy the passed extra dict
Skydive: fix docstring
4.8.1#
Service/Monitoring: fix collector_address for telegraf agents
4.8.0#
Enforce python3.6+ everywhere
Add more functionnal tests
Api:
play_on
accepts apriors
parametersAdd
run
command for simplicity sakeenoslib.host.Host
is now a dataclassTypecheck enabled in CI
4.7.0#
G5k: Default to Debian10
Vagrant: Defaut to Debian10
- VMonG5k:
Default to Debian10
Activate VLC console (fix an issue with newest G5K virt images…)
Run VMs as root
4.6.0#
Chameleon: minor fixes, support for the primer example
Vagrant: customized name and config is now supported
Locust/service: initial version (locust.io)
G5k: support for arbitrary SSH key
4.5.0#
Dependencies: upgrade python-grid5000 to 0.1.0+
VMonG5K/API break: use g5k api username instead of USER environment variable
VMonG5K: make the provider idempotent
4.4.5#
Doc: some fixes
VMonG5k: change gateway description
4.4.4#
Doc: distem makes use of stretch image by default
4.4.3#
Doc: Doc updates (readme and distem)
4.4.2#
Doc: update distem tutorial
4.4.1#
Catch up changelog
4.4.0#
New provider: Distem
4.3.1#
G5k: fix walltime > 24h
4.3.0#
G5k:
get_api_username
to retrieve the current user loginDoc: fix
play_on
4.2.5#
Services: Add missing files in the wheel
4.2.4#
Skydive: Fix topology discovery
Doc: Fix
pattern_hosts
kwargs
4.2.3#
Doc: Factorize readme and doc index
4.2.2#
Doc: Fix sphinx warnings
4.2.1#
Fix changelog syntax
4.2.0#
Service: Add skydive service
Service: Internal refactoring
4.1.1#
Catch-up changelog for 4.1.x
4.1.0#
API(breaks): Introduce
patterns_hosts
as a keyword argumentAPI: Introduce
gather_facts
functionDoc: Fix python3 for virtualenv on g5k
API: Allow top level and module level arguments to be passed in
run_command
andplay_on
G5K: Use ring to cache API requests results
API: Support for
raw
module inplay_on
Black formatting is enforced
4.0.3#
Doc: Fix netem service link
4.0.2#
Doc: Add a placement example (vmong5k)
4.0.1#
Doc: Capitalize -> EnOSlib
4.0.0#
Service: add Netem service as a replacement for
(emulate|reset|validate)_network
functions. Those functions have been droppedService: add Docker service. Install the docker agent on all your nodes and optionally a docker registry cache
Upgrade jsonschema dependency
Migrate sonarqube server
Vagrant: OneOf for
flavour
andflavour_desc
has been fixedApi:
play_on
tasks now accept adisplay_name
keyword. The string will be displayed on the screen as the name of the command.
3.4.2#
Service: fix example
3.4.1#
Service: monitoring update doc
3.4.0#
Introduce a monitoring service (quickly deploy a monitoring stack)
API: Add display_name kwargs in play_on (debug/display purpose)
3.3.3#
Doc: in using-tasks include whole python script
3.3.2#
Doc: fix using-tasks output
3.3.1#
Doc: Include changelog in the documentation
ChameleonBaremetal: fix tutorial
3.3.0#
G5k: automatic redepoy (max 3) when nodes aren’t deployed correctly
3.2.4#
Avoid job_name collision from 2 distinct users
3.2.3#
Fix an issue with emulate_network (it now uses inventory_hostname)
3.2.2#
VMonG5k: fix the networks returned value
3.2.1#
G5k: Fix static driver
3.2.0#
VMonG5K: Enables taktuk for image broadcast
3.1.4#
Doc: Fix network_emulation conf
3.1.3#
Doc: add missing files
3.1.2#
Doc: Document network emulation
3.1.1#
Doc: VMonG5K warning about the working_dir being removed
3.1.0#
VMonG5k: expose start_virtualmachines function
3.0.1#
Doc: Add VMonG5k primer
Doc: Secure credential file
3.0.0#
[G5k]: now uses python-grid5000 for all the interactions with Grid’5000
[VMonG5K]: Add a gateway option
[VMonG5K]: Coerce to enoslib.Host before returning from init.
2.2.10#
Doc: use std env for primer on g5k
2.2.9#
Doc add 10.1109/TPDS.2019.2907950
2.2.8#
Dependencies: add pyyaml and be a bit strict
tasks: add the knowledge of host datastructure when deserializing
Vagrant: force gateway ip to string
Doc: add performance tuning section
2.2.7#
Doc: Gender equality fix
2.2.6#
Doc: static provider
Doc: various fixes
2.2.5#
CI: add play_on functional test
2.2.4#
Doc: Update Primer (add g5k example)
2.2.3#
API: fix gather_facts=False in play_on
2.2.2#
Doc: put project boostrap at the end (formerly quickstart)
2.2.1#
Doc: add EnOSlib primer
API: discover_network now add <network>_ip and <network>_dev in the hosvars
2.2.0#
API: Introduce play_on context_manager to describe a playbook directly from python
2.1.0#
- API: In memory inventory. Generating a inventory file is not mandatory anymore.
On can pass the provider roles in most of the API calls.
VMonG5K: allow to specify a working directory
Dependencies: Upgrade Ansible to latest stable (2.7.x)
2.0.2#
(breaking) VMonG5K/Vagrant: Unify code. flavour_desc dict can be used after building the MachineConfiguration.
2.0.1#
VMonG5K: Package was missing site.yml file
2.0.0#
Warning breaking changes:
EnOSlib is python3.5+ compatible exclusively.
Provider: a provider must be given a configuration object. You can build it from a dictionnary (this mimics EnOSlib 1.x) or build it programmaticaly. In pseudo code, changes are needed in your code as follow:
` from enoslib.infra.enos_g5k.configuration import Configuration from enoslib.infra.enos_g5k.provider import G5k ... conf = Configuration.from_dictionnary(provider_conf) g5k = G5k(conf) ... `
Provider: Configuration object The configuration object aim at ease the process of building configuration for providers. It can be validated against a jsonschema defined for each provider. Validation is implicit using from_dictionnary or explicit using the finalize() method of the configuration.
Doc: Update docs to reflect the above
VMonG5K: new provider that allows to start virtual machines on G5K.
1.12.3#
API: utils.yml playbook now forces fact gahering.
Misc: initial gitlab-ci supports
1.12.2#
G5K: Refix an issue when number of nodes is zero
1.12.1#
G5K: fix an issue when number of nodes is zero
1.12.0#
API: emulate|reset|validate now accept an extra_vars dict
G5K: secondary_networks are now a mandatory key
G5K: support for zero nodes roles
1.11.2#
Make sure role and roles are mutually exclusive
1.11.1#
Fix empty config_file case in enostask
1.11.0#
G5K: add static oar job support
1.10.0#
G5K: align the subnet description with the other network
API: validate_network now filters devices without ip address
API: check_network now uses JSON serialisation to perform better
1.9.0#
G5K api: expose get_clusters_sites
G5K: dhcp is blocking
G5k: introduce drivers to interact with the platform
1.8.2#
Chameleon: fix flavor encoding
Chameleon: Create one reservation per flavor
Openstack: fix python3 compatibility
1.8.1#
relax openstack client constraints
1.8.0#
G5K api: expose exec_command_on_nodes
Openstack: enable the use of session for blazar
Openstack: Allow keystone v3 authentification
1.7.0#
G5K api: fixed get_clusters_interfaces function
Ansible: group vars were’nt loaded
Allow fake interfaces to be mapped to net roles
1.6.0#
G5K: add subnet support
An enostask can now returns a value
Openstack/Chameleon: support region name
Openstack/Chameleon: support for extra prefix for the resources
Chameleon: use config lease name
1.5.0#
python3 compatibility
Confirm with predictable NIC names on g5k
1.4.0#
Fix the autodoc generation
Document the cookiecutter generation
Default to debian9 for g5k
1.3.0#
Change setup format
Move chameleon dependencies to extra_require
1.2.1#
Drop validation of the bandwitdh
Add missing host file
1.2.0#
Add reset network
0.0.6#
add min keyword in machine descipriotn on for G5K
0.0.5#
reservation is supported in g5k provider
expand_groups is available in the api
get_cluster_interfaces is available in the g5k api.
0.0.4#
Exclude not involved machines from the tc.yml run
Take force_deploy in g5k provider
Wait ssh to be ready when check_network=True in generate_inventory
Add start/end enostask logging
0.0.3#
Add static provider
Add OpenStack provider (and chameleon derivatives)
Add provider_conf validation
Rearchitect providers
Add dummy functionnal tests
Add network emulation
0.0.2#
Add fake interface creation option un check_network
Encapsulate check_network in generate_inventory
Add automatic discovery of network interfaces names/roles
Add vagrant/g5k provider
0.0.1#
Initial version