The skeleton for Netbox plugin.
Basically, it's a Django app skeleton, which contains all necessary (and unnecessary) files for building a new plugin.
You can get this skeleton in two ways:
- Create your own GitHub repository using that one as a template HowTo
- Clone this repo or download it as an archive
Use repren script for replacing name. Set the new name of your plugin as an argument to the script.
Example:
python3 develop/repren.py my_new_plugin
Found 29 files in: .
- modify: ./Makefile: 3 matches
- modify: ./MANIFEST.in: 1 matches
- modify: ./setup.py: 1 matches
- modify: ./README.me: 1 matches
- modify: ./develop/configuration.py: 1 matches
- modify: ./develop/docker-compose.yml: 4 matches
- rename: ./netbox_newplugin/signals.py -> ./my_new_plugin/signals.py
- rename: ./netbox_newplugin/version.py -> ./my_new_plugin/version.py
- rename: ./netbox_newplugin/tamplate_content.py -> ./my_new_plugin/tamplate_content.py
- rename: ./netbox_newplugin/models.py -> ./my_new_plugin/models.py
- modify: ./netbox_newplugin/__init__.py: 1 matches
- rename: ./netbox_newplugin/__init__.py -> ./my_new_plugin/__init__.py
- rename: ./netbox_newplugin/forms.py -> ./my_new_plugin/forms.py
- rename: ./netbox_newplugin/admin.py -> ./my_new_plugin/admin.py
- rename: ./netbox_newplugin/tables.py -> ./my_new_plugin/tables.py
- modify: ./netbox_newplugin/navigation.py: 1 matches
- rename: ./netbox_newplugin/navigation.py -> ./my_new_plugin/navigation.py
- rename: ./netbox_newplugin/urls.py -> ./my_new_plugin/urls.py
- rename: ./netbox_newplugin/filters.py -> ./my_new_plugin/filters.py
- rename: ./netbox_newplugin/middleware.py -> ./my_new_plugin/middleware.py
- rename: ./netbox_newplugin/views.py -> ./my_new_plugin/views.py
- modify: ./netbox_newplugin/api/serializers.py: 1 matches
- rename: ./netbox_newplugin/api/serializers.py -> ./my_new_plugin/api/serializers.py
- rename: ./netbox_newplugin/api/__init__.py -> ./my_new_plugin/api/__init__.py
- rename: ./netbox_newplugin/api/urls.py -> ./my_new_plugin/api/urls.py
- modify: ./netbox_newplugin/api/views.py: 1 matches
- rename: ./netbox_newplugin/api/views.py -> ./my_new_plugin/api/views.py
- rename: ./netbox_newplugin/templates/netbox_newplugin/example -> ./my_new_plugin/templates/my_new_plugin/example
Found 29 files in: .
- modify: ./README.me: 1 matches
- modify: ./my_new_plugin/__init__.py: 2 matches
Set name, url, author, description, etc in README
, setup.py
, and __init__.py
If the repo was cloned, just remove .git folder
rm -rf .git
and set your own repo like this
git init
git add .
git commit -m 'init'
Useful tools for developing the plugin you can find in the develop folder of this repo. Use Makefile to run a new development environment with docker in 3 commands. (docker and docker-compose required).
- Set
PYTHON_VER
andNETBOX_VER
in Makefile or environment
PYTHON_VER?=3.7
NETBOX_VER?=v2.10.3
- Build netbox container
make cbuild
docker-compose -f ./develop/docker-compose.yml \
-p my_new_plugin build \
--build-arg netbox_ver=v2.10.3 \
--build-arg python_ver=3.7
postgres uses an image, skipping
redis uses an image, skipping
Building netbox
[+] Building 1.7s (15/15) FINISHED
...
Successfully built ec6e8aabbaddb7c4386aef8f779d9ae7e8562f521e9041b7c20a3233f4c3a6d9
Building worker
[+] Building 0.2s (15/15) FINISHED
...
Successfully built ec6e8aabbaddb7c4386aef8f779d9ae7e8562f521e9041b7c20a3233f4c3a6d9
- Run netbox container
make debug
- Add django superuser
make adduser
docker-compose -f ./develop/docker-compose.yml -p my_new_plugin run netbox python manage.py createsuperuser
Creating my_new_plugin_netbox_run ... done
Username (leave blank to use 'root'): admin
Email address:
Password:
Password (again):
Superuser created successfully.
If you got the error with git after change plugin name like this:
fatal: unknown index entry format 0x196e0000
use following commands to fix it
rm -f .git/index
git reset