Skip to content
No description, website, or topics provided.
Python Jupyter Notebook
Branch: master
Clone or download
mvdwoord Implemented GNS3Project create/delete methods
Moved /v2 part into GNS3API.base and removed from paths everywhere to align with underlying source code.
Latest commit e44f57b Aug 21, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Trying out some more sphinx builds, unstatisfactory Aug 20, 2017
pygns3 Implemented GNS3Project create/delete methods Aug 21, 2017
test
tools Implemented GNS3Project create/delete methods Aug 21, 2017
.gitignore Unpolished tools to extract routes, then stash the actual API respons… Aug 18, 2017
Example.ipynb Refactoring, added pylint and a bunch of docstrings. Max line length … Aug 15, 2017
LICENSE Updated setup.py with proper information for PyPi Aug 10, 2017
MANIFEST.in Updated setup.py with proper information for PyPi Aug 10, 2017
README.md Implemented some additional classes Aug 12, 2017
README.rst Implemented some additional classes Aug 12, 2017
requirements.txt Setup a CONFIGURATION object, dynamically loaded from config file Aug 8, 2017
setup.py Implemented GNS3Node and added ports with namelookup to GNS3Link Aug 14, 2017

README.md

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.

You can’t perform that action at this time.