netlab 1.6.0: New Commands, Reports, and External Connectivity
netlab release 1.6.0 has (probably) the longest release notes so far as it contains so many user-visible new features including:
New Commands
Some users were complaining how complex it was to use netlab create command to create graphs, inspect data structures, or create custom reports. They might find the new commands easier to use:
- netlab report generates built-in or user-defined text- or HTML reports based on transformed lab topology.
- netlab graph generates topology graph descriptions in GraphViz or D2 format
- netlab inspect displays data structures in transformed lab topology
Reports
You could store a Jinja2 template into a defaults.outputs.reports.something dictionary value in the lab topology to create custom reports with previous netlab versions – probably one of the worst kludges I ever made.
The new netlab report command can read Jinja2 templates from user-, system- or package directories and create text or HTML reports. The report templates shipping with netlab release 1.6 include:
- Node, interface and link addressing reports
- Lab wiring summary
- Device management IP addresses, usernames, and passwords
If you’d like to have other reports, please open a Github issue describing what you’d like to see in them.
Display Internal Information
netlab show command can display configuration modules, devices supported by each configuration module, the state of the virtualization providers, output formats supported by netlab create command, and report templates included with netlab. All reports are available in table-, text-, or YAML format.
External Connectivity
One of the previous versions added the ability to connect libvirt-based virtual machines straight to the external networks (using macvtap interfaces). A few days after containerlab implemented macvlan interfaces I used that functionality in the clab
provider – containers started by netlab can now communicate directly with external devices.
Finally, I figured out it’s not too hard to implement host-to-VM or host-to-container port forwarding, enabling direct (management) connectivity to lab devices without connecting the management network to the outside world.
Upgrading
To get more details and learn about additional features included in release 1.6.0, read the release notes. To upgrade, execute pip3 install --upgrade networklab
.
New to netlab? Start with the Getting Started document and the installation guide.
Need help? Open a discussion or an issue in netlab GitHub repository. There’s also a netlab channel in networktocode Slack team, but you will get faster response time reporting your challenges in GitHub.