Skip to main content

Build Status Documentation Status

Network Source of Truth (NSoT) is an API and web application front-end for managing IP addresses (IPAM), network devices, and network interfaces.

Warning

This project is stable and fully unit-tested, however as it is pre-1.0 it is still very much in flux and likely to have backwards-incompatible API changes for the time being. Also some documentation may describe steps not yet possible, or in some cases possible steps may not be fully documented.

Roadmap

NSoT is designed to be a source of truth database and repository for tracking inventory and metadata of network entities to ease management and automation of network infrastructure.

Currently only IP address management (IPAM), device inventory, and network interfaces is on the road-map but it will evolve into more over time.

For more information please, see the documentation.

Documentation

The latest documentation will always be available at http://nsot.readthedocs.org/en/latest/

Interactive API documentation can be found at /docs/ on a running NSoT server.

Installation

New versions will always be uploaded to PyPI regularly so it should be as easy as:

$ pip install nsot

Development

Note: You’ll need to have a reasonably recent version of npm to build front-end dependencies. (Minimum version tested is 1.3.24)

We suggest setting up your test environment in a Python virtualenv:

$ virtualenv nsot
$ source nsot/bin/activate

Or, if you use virtualenvwrapper:

$ mkvirtualenv nsot

If you haven’t already, make sure you set up git and add an SSH key to your GitHub account before proceeding!

After that, clone the repository into whichever directory you use for development and install the dependencies:

$ git clone git@github.com:dropbox/nsot.git
$ cd nsot
$ pip install -r requirements-dev.txt
$ python setup.py develop

Running a Test instance

For developement and testing, it’s easiest to run NSoT behind a reverse proxy that handles authentication and sends a username via a special HTTP header. We’ve included a test proxy for running on development instances.

To get started, follow these steps:

# Initialize the config
$ nsot-server init

# Setup the database.
$ nsot-server upgrade

# Run the development reverse proxy (where $USER is the desired username)
$ nsot-server user_proxy $USER

# (In another terminal) Run the front-end server, remember to activate your
# virtualenv first if you need to
$ nsot-server start

Note: This quick start assumes that you’re installing and running NSoT on your local system (aka localhost).

Now, point your web browser to http://localhost:8888 and explore the documentation!

Running Tests

All tests will automatically be run on Travis CI when pull requests are sent. However, it’s beneficial to run the tests often during development:

$ py.test -v tests/

Working with database migrations

If you make any changes to the database models you’ll need to generate a new migration. We use Django’s built-in support for database migrations underneath, so for general schema changes is should be sufficient to just run:

$ nsot-server makemigrations

This will generate a new schema version. You can then sync to the latest version:

$ nsot-server migrate

Working with docs

Documentation is generated using Sphinx. If you just want to build and view the docs | you cd into the docs directory and run make html. Then point your browser | to docs/\_build/html/index.html on your local filesystem.

If you’re actively modifying the docs it’s useful to run the autobuild server:

$ sphinx-autobuild docs docs/_build/html/

This will start a server listening on a port that you can browse to and will be automatically reloaded when you change any rst files. One downside of this approach is that is doesn’t refresh when docstrings are modified.

Front-end development

We use a combination JavaScript utilities to do front-end development:

  • npm - npm is used to manage our build dependencies

  • bower - bower to manage our web dependencies

  • gulp - gulp for building, linting, testing

Note: You do not have to install these yourself! When you run setup.py develop, it will install and build all front-end components for you!

Adding new build dependencies

For the most part you shouldn’t need to care about these details though if you want to add new build dependencies, for example gulp-concat, you would run the followiing:

# Install gulp-concat, updating package.json with a new devDependency
$ npm install gulp-concat --save-dev

# Writes out npm-shrinkwrap.json, including dev dependencies, so consistent
# build tools are used
$ npm shrinkwrap --dev

Adding new web dependencies

Adding new web dependencies are done through bower:

# Install lodaash, updating bower.json with the new dependency
$ bower install lodash --save

Unfortunately, bower doesn’t have a shrinkwrap/freeze feature so you’ll want to update the version string to make the version explicit for repeatable builds.

We make use of bower’s “main file” concept to distribute only “main” files. Most packages don’t consider consider the minified versions of their project to be their main files so you’ll likely also need to update the overrides section of bower.json with which files to distribute.

Demo

If you would like to run the demo, make sure you’ve got NSoT installed, change to the demo directory and run:

$ ./run_demo.sh

Support

For the time being the best way to get support, provide feedback, ask questions, or to just talk shop is to find us on IRC at #nsot on Freenode (irc://irc.freenode.net/nsot).

See Also

  • pynsot - Python client library and command-line utility for the Network Source of Truth REST API.

Release files for nsot 0.11.6

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

Source distribution (sdist)

Source distribution for nsot 0.11.6
File Size Uploaded
nsot-0.11.6.tar.gz 871.4 kB Details

Release files / nsot-0.11.6.tar.gz

Download URL nsot-0.11.6.tar.gz
Size 871.4 kB
Tags Source
SHA-256 checksum
How to use checksums
994f8b09b8dc2c397a42ce811e8f96e3032aee21bc71ee3509278c43985db459
BLAKE2b-256 checksum
How to use checksums
1d67e2c6463f9889b762fd52b5a1c12c884f74008776cef471680573910783a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

2.14.2

2 release files

2.14.0

2 release files

2.13.0

2 release files

2.12.0

2 release files

2.11.0

2 release files

2.10.0

2 release files

2.9.1

2 release files

2.9.0

2 release files

2.8.1

2 release files

2.8.0

2 release files

2.7.0

2 release files

2.6.0

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.4.6

1 release file

1.4.5

1 release file

1.4.4

1 release file

1.4.3

1 release file

1.4.1

1 release file

1.4.0

1 release file

1.3.0

1 release file

1.2.3

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.8

1 release file

1.1.7

1 release file

1.1.6

1 release file

1.1.5

1 release file

1.1.4

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1

1 release file

1.0.13

1 release file

1.0.12

1 release file

1.0.11

1 release file

1.0.10

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0

1 release file

0.17.4

1 release file

0.17.3

1 release file

0.17.2

1 release file

0.17.1

1 release file

0.17

1 release file

0.16

1 release file

0.15.10

1 release file

0.15.9

1 release file

0.15.8

1 release file

0.15.7

1 release file

0.15.6

1 release file

0.15.5

1 release file

0.15.4

1 release file

0.15.3

1 release file

0.15.2

1 release file

0.15.1

1 release file

0.15

1 release file

0.14.2

1 release file

0.14.1

1 release file

0.14

1 release file

0.13.2

1 release file

0.13.1

1 release file

0.13

1 release file

0.12.7

1 release file

0.12.6

1 release file

0.12.5

1 release file

0.12.4

1 release file

0.12.3

1 release file

0.12.2

1 release file

0.12.1

1 release file

0.12

1 release file

0.11.7

1 release file

This release

0.11.6 This release

1 release file

0.11.5

1 release file

0.11.4

1 release file

0.11.3

1 release file

0.11.2

1 release file

0.11.1

1 release file

0.11

1 release file

0.10.6

1 release file

0.10.5

1 release file

0.10.4

1 release file

0.10.3

1 release file

0.10.2

1 release file

0.10.1

1 release file

0.10

1 release file

0.9.4

1 release file

0.9.3

1 release file

0.9.2

1 release file

0.9.1

1 release file

0.9

1 release file

0.8.6

1 release file

0.8.5

1 release file

0.8.4

1 release file

0.8.2

1 release file

0.8.1

1 release file

0.8

1 release file

0.7.4

1 release file

0.7.3

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.7

1 release file

0.5.6

1 release file

0.5.5

1 release file

0.5.3

1 release file

0.5.2

1 release file

0.5

1 release file

0.4.4

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3

1 release file

0.0.1

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