In the beginning, there were fixed, physical testbeds. Each testbed device had its own uniquely implemented clean procedures, and there was chaos…
As test automation technologies advanced, virtual & physical dynamic testbeds were added to the mix. Each operated differently, and chaos prospered…
And then came… Kleenex, a framework designed to standardize the process and implementation of the provisioning and cleaning of testbed topologies and devices.
Device cleaning (a.k.a. Clean) defines the process of preparing physical testbed devices by loading them with appropriate images (recovering from bad images), removing unnecessary configurations and returning devices to their default initial state by applying basic configurations such as console/management ip addresses, etc.
Kleenex offers the base infrastructure required by all clean implementations:
…and all the necessary guidelines and information required for users to develop their platform specific clean methods.
Kleenex Clean standardizes how users implement platform-specific clean methods, providing the necessary entry points and subprocess management.
The Kleenex module
kleenex is installed by default as part of pyATS
installation. It is also a pre-requisite to installing the
This package is featured on the PyPI server.
kleenex module is part of the
pyats namespace, and therefore,
users should always refer to the full namespace when installing & using it.
pip install pyats.kleenex
To upgrade an existing installation of the Kleenex package in your environment, do:
pip install pyats.kleenex --upgrade
always read the Changelog first before you upgrade.
- Actual Device¶
A live device that can be connected to, for example, via a console connection.
The process and procedures required to bring a physical router/device to a testable steady state. Includes but not limited to:
loading new images
returning to default/initial states
configuring the bare-minimum required for console/mgmt connections
- Clean File¶
A YAML based input file containing details of how to prepare and clean the testbed, used by Kleenex.
A particular clean implementation inheriting the
- Dynamic Testbeds¶
Testbeds defined using logical device requirements, and provisioned through orchestrators. Typically, a dynamic testbed is a sum of hardware and virtual devices allocated & prepared through a cloud infrastructure.
- Logical Device¶
A set of constraints that contain enough information for an orchestrator to bind the requested logical device to an actual device.
- Logical Testbed File¶
A YAML file that describes a topology of logical devices and their interconnections. Logical testbed files are not loadable, they may be seen as a set of constraints that must be passed to an orchestration backend in order to be transformed into an actual loadable testbed file.
The automated arrangement, coordination, and management of complex computer systems, middleware and services. Eg: provisioning dynamic testbed topologies, allocating resources, etc.
The sum of all actual devices (routers, switches, TGNs) interconnected together. In pyATS, the testbed is represented using Topology Module.