GNS3 server
Go to file
Jeremy Grossmann c4b10ac4da
Merge pull request #2099 from GNS3/strict-pytest-asyncio
Support for pytest-asyncio strict mode
2022-08-24 21:11:55 +02:00
.github/workflows Merge branch '2.2' into 3.0 2022-04-27 22:23:05 +07:00
conf Allow default symbol theme to be configured 2022-07-25 20:22:12 +02:00
docs Make Swagger Ui the default for API documentation 2020-11-02 12:47:59 +10:30
gns3server Custom adapters should not be in node (compute) properties returned to clients. Fixes https://github.com/GNS3/gns3-gui/issues/3366 2022-08-06 12:37:05 +02:00
init Added OpenRC init script 2022-05-16 07:06:29 +03:00
scripts Do not use build-optimizer when bundling web-ui. Ref https://github.com/GNS3/gns3-web-ui/issues/1366 2022-07-31 12:39:42 +02:00
tests Upgrade dev dependencies and fix tests to support pytest-asyncio strict mode 2022-08-24 21:03:16 +02:00
.coveragerc Fix coveralls configuration 2015-06-18 16:33:24 +02:00
.gitattributes Keep the version.py untouched when merging 2016-05-11 10:06:21 +02:00
.gitignore Rename ssl and auth configuration file settings. 2021-04-12 23:26:42 +09:30
.whitesource Add .whitesource configuration file 2020-06-26 01:01:48 +00:00
AUTHORS Adjust AUTHORS. 2015-07-12 17:25:03 -06:00
CHANGELOG Release v3.0.0a1 2022-08-04 11:38:17 +02:00
CONTRIBUTING.md Merge branch 'master' into 1.5 2016-06-15 19:11:26 +02:00
dev-requirements.txt Upgrade dev dependencies and fix tests to support pytest-asyncio strict mode 2022-08-24 21:03:16 +02:00
docker-compose.yml Refactor tests and start work on database integration. 2020-12-02 18:39:08 +10:30
Dockerfile Update Docker image for tests 2021-12-17 12:20:46 +10:30
gns3server.bat Made the gns3server.bat successfully start the server independent of the CWD at the time of running. It's now relative to the location of the .bat file itself. 2015-12-24 16:45:02 +02:00
LICENSE Project structure & tools (pytest, tox etc.) 2013-10-08 11:33:51 -06:00
mac-requirements.txt Upgrade packages to latest versions 2020-11-08 21:35:54 +10:30
MANIFEST.in Include conf file in MANIFEST.in Ref #2044 2022-03-28 14:45:29 +10:30
README.md Update README.md 2022-03-14 14:46:29 +10:30
readthedocs.yml Use Python3.6 to build the API documentation. 2018-11-20 15:35:46 +07:00
requirements.txt Upgrade dependencies 2022-08-23 22:12:01 +02:00
SECURITY.md Create SECURITY.md 2022-03-14 14:27:32 +10:30
setup.py Require Python >= 3.7 2022-04-26 19:11:37 +07:00
win-requirements.txt Merge branch '2.2' into 3.0 2022-03-13 14:50:02 +10:30

GNS3 server repository

Style GitHub Actions tests Latest PyPi version Snyk scanning

The GNS3 server manages emulators and other virtualization software such as Dynamips, Qemu/KVM, Docker, VPCS, VirtualBox and VMware Workstation. Clients like the GNS3 GUI and the GNS3 Web UI control the server using a HTTP REST API.

Installation

These instructions are for using GNS3, please see below for development.

Windows & macOS

Please use our Windows installer or DMG package to install the stable build along with the GNS3 VM. Note that as of GNS3 version above 3.0, you must run the server using the GNS3 VM or on a Linux system (remote, cloud or virtual machine).

Linux

Ubuntu based distributions

We build and test packages for actively supported Ubuntu versions. Other distros based on Ubuntu, like Mint, should also be supported.

Packages can be installed from our Personal Package Archives (PPA) repository:

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:gns3/ppa
sudo apt update                                
sudo apt install gns3-gui gns3-server

Other Linux distributions

GNS3 is often packaged for other distributions by third-parties:

PyPi

You may use PyPi in case no package is provided, or you would like to do a manual installation:

python3 -m pip install gns3-gui
python3 -m pip install gns3-server

The downside of this method is you will have to manually install all dependencies (see below).

Please see our documentation for more details.

Software dependencies

In addition to Python dependencies, other software may be required, recommended or optional.

  • uBridge is required, it interconnects the nodes.
  • Dynamips is required for running IOS routers (using real IOS images) as well as the internal switches and hubs.
  • VPCS is recommended, it is a builtin node simulating a very simple computer to perform connectivity tests using ping, traceroute etc.
  • Qemu is strongly recommended as most node types are based on Qemu, for example Cisco IOSv and Arista vEOS.
  • libvirt is recommended as it's needed for the NAT cloud.
  • Docker is optional, some nodes are based on Docker.
  • mtools is recommended to support data transfer to/from QEMU VMs using virtual disks.
  • i386-libraries of libc and libcrypto are optional, they are only needed to run IOU based nodes.

Note that Docker needs the script program (bsdutils or util-linux package), when running a Docker VM and a static busybox during installation (python3 setup.py install / pip3 install / package creation).

Development

Setting up

These commands will install the server as well as all Python dependencies:

git clone https://github.com/GNS3/gns3-server
cd gns3-server
git checkout 3.0
python3 -m venv venv-gns3server
source venv-gns3server/bin/activate
python3 setup.py install
python3 -m gns3server --local

You will have to manually install other software dependencies (see above), for Dynamips, VPCS and uBridge the easiest is to install from our PPA.

Docker container

Alternatively, you can run the GNS3 server in a container

bash scripts/docker_dev_server.sh

Running tests

First, install the development dependencies:

python3 -m pip install -r dev-requirements.txt

Then run the tests using pytest:

python3 -m pytest -vv tests/

API documentation

The API documentation can be accessed when running the server locally:

  • On http://IP:PORT/docs to see with Swagger UI (i.e. http://localhost:3080/docs)
  • On http://IP:PORT/redoc to see with ReDoc (i.e. http://localhost:3080/redoc)

The documentation can also be viewed online however it may not be the most up-to-date version since it needs manually synchronization with the current code. Also, you cannot use this to interact with a GNS3 server.

Branches

master

master is the next stable release, you can test it in your day-to -day activities. Bug fixes or small improvements pull requests go here.

3.x development brand for the next major release.

Never use this branch for production. Pull requests for major new features go here.