Skip to main content

Django implementation of NetJSON NetworkGraph

Project description

https://travis-ci.org/interop-dev/django-netjsongraph.svg https://coveralls.io/repos/interop-dev/django-netjsongraph/badge.svg Requirements Status https://badge.fury.io/py/django-netjsongraph.svg https://img.shields.io/pypi/dm/django-netjsongraph.svg

Reusable django app for collecting and visualizing network topology.

https://raw.githubusercontent.com/interop-dev/django-netjsongraph/master/docs/images/visualizer.png https://raw.githubusercontent.com/interop-dev/django-netjsongraph/master/docs/images/admin.png

Current features:

  • topology information collector supporting different formats:
    • NetJSON NetworkGraph

    • OLSR (jsoninfo/txtinfo)

    • batman-adv (jsondoc/txtinfo)

    • BMX6 (q6m)

    • CNML 1.0

  • visualizer based on netjsongraph.js

  • simple HTTP API that exposes data in NetJSON NetworkGraph format

Goals:

  • make it easy to visualize network topology data for the formats supported by netdiff

  • expose topology data via RESTful resources in NetJSON NetworkGraph format

  • make it easy to integrate in larger django projects to improve reusability

  • make it easy to extend its models by providing abstract models (needs improvement in this point)

  • provide ways to customize or replace the visualizer (needs improvement in this point)

  • keep the core very simple, provide ways to extend the default behaviour

Install stable version from pypi

Install from pypi:

pip install django-netjsongraph

Install development version

Install tarball:

pip install https://github.com/interop-dev/django-netjsongraph/tarball/master

Alternatively you can install via pip using git:

pip install -e git+git://github.com/interop-dev/django-netjsongraph#egg=django-netjsongraph

If you want to contribute, install your cloned fork:

git clone git@github.com:<your_fork>/django-netjsongraph.git
cd django-netjsongraph
python setup.py develop

Setup (integrate in an existing django project)

Add rest_framework and django_netjsongraph to INSTALLED_APPS:

INSTALLED_APPS = [
    # other apps
    'rest_framework',
    'django_netjsongraph'
    # ...
]

Include urls in your urlconf (you can change the prefixes according to your needs):

from django.conf.urls import include, url

from django_netjsongraph.api import urls as netjsongraph_api
from django_netjsongraph.visualizer import urls as netjsongraph_visualizer

urlpatterns = [
    # your URLs ...
    url(r'^api/', include(netjsongraph_api)),
    url(r'', include(netjsongraph_visualizer)),
]

Management Commands

update_topology

After topology URLs (URLs exposing the files that the topology of the network) have been added in the admin, the update_topology management command can be used to collect data and start playing with the network graph:

./manage.py update_topology

The management command accepts a --label argument that will be used to search in topology labels, eg:

./manage.py update_topology --label mytopology

Logging

The update_topology management command will automatically try to log errors.

For a good default LOGGING configuration refer to the test settings.

Settings

Setting

Default value

Description

NETJSONGRAPH_PARSERS

[]

List with additional custom netdiff parsers

NETJSONGRAPH_SIGNALS

None

String representing python module to import on initialization. Useful for loading django signals or to define custom behaviour.

Installing for development

Install sqlite:

sudo apt-get install sqlite3 libsqlite3-dev

Install your forked repo:

git clone git://github.com/<your_fork>/django-netjsongraph
cd django-netjsongraph/
python setup.py develop

Install test requirements:

pip install -r requirements-test.txt

Create database:

cd tests/
./manage.py migrate
./manage.py createsuperuser

Launch development server:

./manage.py runserver

You can access the visualizer at http://127.0.0.1:8000/ and the admin interface at http://127.0.0.1:8000/admin/.

Run tests with:

./runtests.py

Contributing

  1. Announce your intentions in the issue tracker

  2. Fork this repo and install it

  3. Follow PEP8, Style Guide for Python Code

  4. Write code

  5. Write tests for your code

  6. Ensure all tests pass

  7. Ensure test coverage is not under 90%

  8. Document your changes

  9. Send pull request

Project details


Download files

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

Source Distribution

django-netjsongraph-0.1.1.tar.gz (78.5 kB view details)

Uploaded Source

Built Distribution

django_netjsongraph-0.1.1-py2.py3-none-any.whl (88.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-netjsongraph-0.1.1.tar.gz.

File metadata

File hashes

Hashes for django-netjsongraph-0.1.1.tar.gz
Algorithm Hash digest
SHA256 bde4d60bbb5df02ab01da78d5491847dc7a2925f17d4752f2d6ec08f91dadd19
MD5 51f2cdb876991551584f4d2bee8c454c
BLAKE2b-256 fa3d60f66f3ec4b78eb7a1b5f3a16384960527cd9a007bac0beeee4e904659a8

See more details on using hashes here.

Provenance

File details

Details for the file django_netjsongraph-0.1.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_netjsongraph-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 22d9b466bb561b03774d86f8a2b25e393035f02a97404ec7003e278579846897
MD5 040b6cfd896c84f25ac8ee628624540c
BLAKE2b-256 e2fc03b365fd3a21828213e86edbcdf83d876105c6c52821a202088fe9dfd62f

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page