Skip to main content

No project description provided

Project description

# PyGNS3

is a POC / idea for a python package to interact with [GNS3](http://gns3.com).

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](https://gns3-server.readthedocs.io/en/latest/endpoints.html#controller-api-endpoints) as a starting point, and implement the Controller endpoints only (for now). The implemented functionality is shown in an [example Jupyter Notebook](https://github.com/mvdwoord/PyGNS3/blob/master/Example.ipynb).

## GNS3Controller

is the main component interacting with GNS3. It attempts to find a valid gns3_server.conf file to grab IP / port / credentials for the WebAPI. After a successful connection the controller object holds some basic properties and allow further inspection and interaction with GNS3.

## 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

I am unsure about how to best implement certain things. a good example of which is when to initialize the API class. Upon import allows for immediate instantiation of classes that are not a subclass of GNS3Controller. I could also implement an explicit method to do this or perhaps there are better / more pythonic ways to juggle this global configuration thing. I just don’t want to endlessly pass the configuration parameters around.

Not sure how the available images relates to the compute object… shows local files? don;t have remote box to test again atm.

## 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 implement telnet interaction of course. Perhaps some configuration diffing or synchronization? who knows.

Plus also perhaps… improvements, error handling, docstrings etc etc etc… and bundling into a package for distribution, and other yak shaving.

Project details


Release history Release notifications

History Node

0.2.1.dev0

History Node

0.2.0.dev0

History Node

0.1.1.dev0

This version
History Node

0.1.0.dev0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
PyGNS3-0.1.0.dev0.tar.gz (4.7 kB) Copy SHA256 hash SHA256 Source None Aug 10, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page