Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

PyGNS3

Python package to interact with GNS3. Usage requires a single call to initialize the GNS3API object.

$pip install pygns3

>>> from pygns3 import *
>>> GNS3API.load_configuration()

It leverages the GNS3 built in API and aims to provide some additional functionality such as custom/bulk interaction with projects and nodes. I have started using GNS3 recently so walking multiple learning curves here. Any ideas / suggestions / constructive criticism is more than welcome.

For now it is Python 3.6 (I think) only. It is what I use, and it is way too early to start thinking about compatibility with older versions.

I am using the API documentation as a starting point, and implement the Controller endpoints only (for now). The implemented functionality is shown in an example Jupyter Notebook.

The package is available on PyPi but right now I am still discovering and changing a lot. Things change and break fast so Github may be more up to date.

Classes

A number of classes are available once the GNS3API class has been initialized.

GNS3Controller

is the main component interacting with GNS3. After a successful connection the controller object holds some basic properties and allows for further inspection and interaction with GNS3.

>>> print(GNS3Controller())

GNS3 Controller API endpoint
    Host    http://127.0.0.1:3080
    Version 2.0.3
    Running 2 Computes

Other

for now, check the Example jupyter notebook..

What is the purpose?

As I am learning and working with GNS3 I’m not sure what exactly this should lead to, but the first thing that comes to mind is parallel commands towards nodes, or other (bulk) manipulations. Not sure what other scenario’s will look like but I guess being able to interact with GNS3 from python could come in handy here or there.

Issues

At the moment mostly my lack of a complete understanding and familiarity with GNS3. There are some (perceived) inconsistencies in the underlying API. Once I have implemented all (or most) classes I will dive deeper and see if I can clarify.

Next steps

Implement some sub components and methods on them. Then add some custom functions which operate on multiple nodes or provide command line visualization. Oh and telnet interaction of course. Perhaps some configuration diffing or synchronization? who knows.

Plus also perhaps… improvements, error handling, docstrings etc etc etc… and other yak shaving.

Release files for PyGNS3 0.2.1.dev0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PyGNS3 0.2.1.dev0
File Size Uploaded
PyGNS3-0.2.1.dev0.tar.gz 8.0 kB Details

Release files / PyGNS3-0.2.1.dev0.tar.gz

Download URL PyGNS3-0.2.1.dev0.tar.gz
Size 8.0 kB
Tags Source
SHA-256 checksum
How to use checksums
9f204f56fbd7b68c556c6abc9779fcae3548afda804387296e8329708236be52
BLAKE2b-256 checksum
How to use checksums
07b91fe20df57455deae128a9fb10bc05cd23d40adf49de89548f39dca570631
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page