Configuration manager for embedded devices, implemented as a reusable django-app
Project description
Configuration manager for embedded devices, implemented as a reusable django-app.
Based on the NetJSON format and the netjsonconfig library.
Current features
- configuration management for embedded devices supporting different firmwares:
support for additional firmware can be added by specifying custom backends
configuration editor based on JSON-Schema editor
advanced edit mode: edit NetJSON DeviceConfiguration objects for maximum flexibility
configuration templates: reduce repetition to the minimum
configuration context: reference ansible-like variables in the configuration
simple HTTP resources: allow devices to automatically download configuration updates
Project goals
automate configuration management for embedded devices
allow to minimize repetition by using templates
make it easy to integrate in larger django projects to improve reusability
make it easy to extend its models by providing abstract models
provide ways to support more firmwares by adding custom backends
keep the core as simple as possible
provide ways to extend the default behaviour
encourage new features to be published as extensions
Install stable version from pypi
Install from pypi:
pip install django-netjsonconfig
Install development version
Install tarball:
pip install https://github.com/openwisp/django-netjsonconfig/tarball/master
Alternatively you can install via pip using git:
pip install -e git+git://github.com/openwisp/django-netjsonconfig#egg=django-netjsonconfig
If you want to contribute, install your cloned fork:
git clone git@github.com:<your_fork>/django-netjsonconfig.git
cd django-netjsonconfig
python setup.py develop
Setup (integrate in an existing django project)
Add django_netjsonconfig, sortedm2m and reversion to INSTALLED_APPS:
INSTALLED_APPS = [
# other apps
'django_netjsonconfig',
'sortedm2m',
'reversion' # optional, can be removed if not needed
# ...
]
Add the controller URLs to your main urls.py:
urlpatterns = [
# ... other urls in your project ...
# controller URLs
# used by devices to download/update their configuration
# keep the namespace argument unchanged
url(r'^', include('django_netjsonconfig.controller.urls', namespace='controller')),
# common URLs
# shared among django-netjsonconfig components
# keep the namespace argument unchanged
url(r'^', include('django_netjsonconfig.urls', namespace='netjsonconfig')),
]
Then run:
./manage.py migrate
Deploy it in production
If you need to deploy django-netjsonconfig by itself (that is without including it in a larger project), you may want to check out the ansible-openwisp2 role.
Installing for development
Install sqlite:
sudo apt-get install sqlite3 libsqlite3-dev
Install your forked repo:
git clone git://github.com/<your_fork>/django-netjsonconfig
cd django-netjsonconfig/
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 admin interface at http://127.0.0.1:8000/admin/.
Run tests with:
./runtests.py
Settings
NETJSONCONFIG_BACKENDS
type: |
list |
default: |
[] |
Additional custom netjsonconfig backends.
NETJSONCONFIG_REGISTRATION_ENABLED
type: |
bool |
default: |
True |
Whether devices can automatically register through the controller or not.
This feature is enabled by default.
Autoregistration must be supported on the devices in order to work, see openwisp-config automatic registration for more information.
NETJSONCONFIG_CONSISTENT_REGISTRATION
type: |
bool |
default: |
True |
Whether devices that are already registered are recognized when reflashed or reset, hence keeping the existing configuration without creating a new one.
This feature is enabled by default.
Autoregistration must be enabled also on the devices in order to work, see openwisp-config consistent key generation for more information.
NETJSONCONFIG_CONTEXT
type: |
dict |
default: |
{} |
Additional context that is passed to the default context of each Config object.
Each Config object gets the following attributes passed as configuration variables:
id
key
name
NETJSONCONFIG_CONTEXT can be used to define system-wide configuration variables.
For more information, see netjsonconfig context: configuration variables.
NETJSONCONFIG_DEFAULT_BACKEND
type: |
str |
default: |
netjsonconfig.OpenWrt |
The preferred backend that will be used as initial value when adding new Config or Template objects in the admin.
Set it to None in order to force the user to choose explicitly.
Screenshots
Contributing
Announce your intentions in the OpenWISP Mailing List
Fork this repo and install it
Write code
Write tests for your code
Ensure all tests pass
Ensure test coverage does not decrease
Document your changes
Send pull request
Changelog
See CHANGES.
License
See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-netjsonconfig-0.3.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f64d4945a0b37f283cdb29e88935574d174cc26ff941b8e79bbc7440e27c2ce |
|
MD5 | 0525667e9591e858eef54764cb15aaf2 |
|
BLAKE2b-256 | be0ee4412d072b3901ca482dfc09847e291de67b080520082f88cffd805ca9ad |
Hashes for django_netjsonconfig-0.3.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | acacf31022528fba24ddd22961290cfb88c6fb912791b975aee5cb8d4febb037 |
|
MD5 | 6c4413d45f3d722d58917aac3902e081 |
|
BLAKE2b-256 | 351ef6a93e464df8b5908f41ca4b834367bfe4afeb74fcabc8d79f5672fb477c |