Python API client library for NetBox.
Note: This is a preliminary release and still under development.
-
Github repository: https://github.com/netbox-community/netbox-python/
-
Documentation https://netbox-community.github.io/netbox-python/
Table of Contents
This is a thin python wrapper over the NetBox API.
To install run pip install netbox-python
.
Alternatively, you can clone the repo and run python setup.py install
.
The full documentation is at https://netbox-community.github.io/netbox-python/, but the following should be enough to get started using it.
To begin, import the NetBox client and instantiate it:
from netbox_python import NetBoxClient, Result
nb = NetBoxClient(
base_url="http://127.0.0.1:8000/", token="1dc6fa5bfcef8390dd83a261c36ed8f1551b2d6b"
)
The first argument NetBoxClient takes is the NetBox URL. The 'token' argument is from NetBox.
Now using the client you can make calls to the api, for example:
# 1. List (paginated)
ret = nb.dcim.sites.list(limit=3)
# 2. Filtered List
ret = nb.dcim.sites.list(region_id="43")
# 3. All
ret = nb.dcim.sites.all()
# 4. Get
ret = nb.dcim.sites.get(24)
# 5. Create
ret = nb.dcim.sites.create(name="foo3", slug="foo3")
# 6. Bulk Create
data = [
{"name": "foo4", "slug": "foo4"},
{"name": "foo5", "slug": "foo5"},
{"name": "foo6", "slug": "foo6"},
]
ret = nb.dcim.sites.create(data)
# 7. Update
ret = nb.dcim.sites.update(26, name="foo2-new", slug="foo2-new-slug")
# 8. Bulk Update
data = [
{"id": 28, "name": "foo4-new", "slug": "foo4-new"},
{"id": 29, "name": "foo5-new", "slug": "foo5-new"},
]
ret = nb.dcim.sites.update(data)
# 9. Delete
ret = nb.dcim.sites.delete(37)
# 10. Bulk Delete
data = [{"id": 25}, {"id": 27}]
ret = nb.dcim.sites.delete(data)
The methods on the api's correspond to the NetBox REST API, so ('circuits', 'core', 'dcim', 'extras', 'ipam', 'plugins', 'tenancy', 'users', 'virtualization', 'wireless')
circuits would have 'circuit_terminations', 'circuit_types', etc... off of it. Each of the endpoints has 'list', 'get', 'create', 'update' and 'delete' functions.
See the open issues for a list of proposed features (and known issues).
- Top Feature Requests (Add your votes using the 👍 reaction)
- Top Bugs (Add your votes using the 👍 reaction)
- Newest Bugs
Reach out to the maintainer at one of the following places:
First off, thanks for taking the time to contribute! Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make will benefit everybody else and are greatly appreciated.
Please read our contribution guidelines, and thank you for being involved!
The original setup of this repository is by Arthur Hanson.
For a full list of all authors and contributors, see the contributors page.
This project is licensed under the Apache Software License 2.0.
See LICENSE for more information.