mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
335cfcde57
At present, a mix of link types are used in the Netbox documentation from markdown file links to relative and absolute anchor links. Of the three types, linking to markdown files is the most ideal because it allows navigation locally on disk, as well as being translated into working links at render time. While not obvious, mkdocs handles converting markdown links to valid URLs. Signed-Off-by: Marcus Crane <marcu.crane@daimler.com>
68 lines
2.7 KiB
Markdown
68 lines
2.7 KiB
Markdown
# NAPALM
|
|
|
|
NetBox supports integration with the [NAPALM automation](https://napalm-automation.net/) library. NAPALM allows NetBox to serve a proxy for operational data, fetching live data from network devices and returning it to a requester via its REST API. Note that NetBox does not store any NAPALM data locally.
|
|
|
|
!!! note
|
|
To enable this integration, the NAPALM library must be installed. See [installation steps](../../installation/3-netbox/#napalm) for more information.
|
|
|
|
Below is an example REST API request and response:
|
|
|
|
```no-highlight
|
|
GET /api/dcim/devices/1/napalm/?method=get_environment
|
|
|
|
{
|
|
"get_environment": {
|
|
...
|
|
}
|
|
}
|
|
```
|
|
|
|
!!! note
|
|
To make NAPALM requests via the NetBox REST API, a NetBox user must have assigned a permission granting the `napalm_read` action for the device object type.
|
|
|
|
## Authentication
|
|
|
|
By default, the [`NAPALM_USERNAME`](../configuration/optional-settings.md#napalm_username) and [`NAPALM_PASSWORD`](../configuration/optional-settings.md#napalm_password) configuration parameters are used for NAPALM authentication. They can be overridden for an individual API call by specifying the `X-NAPALM-Username` and `X-NAPALM-Password` headers.
|
|
|
|
```
|
|
$ curl "http://localhost/api/dcim/devices/1/napalm/?method=get_environment" \
|
|
-H "Authorization: Token $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-H "Accept: application/json; indent=4" \
|
|
-H "X-NAPALM-Username: foo" \
|
|
-H "X-NAPALM-Password: bar"
|
|
```
|
|
|
|
## Method Support
|
|
|
|
The list of supported NAPALM methods depends on the [NAPALM driver](https://napalm.readthedocs.io/en/latest/support/index.html#general-support-matrix) configured for the platform of a device. Because there is no granular mechanism in place for limiting potentially disruptive requests, NetBox supports only read-only [get](https://napalm.readthedocs.io/en/latest/support/index.html#getters-support-matrix) methods.
|
|
|
|
## Multiple Methods
|
|
|
|
It is possible to request the output of multiple NAPALM methods in a single API request by passing multiple `method` parameters. For example:
|
|
|
|
```no-highlight
|
|
GET /api/dcim/devices/1/napalm/?method=get_ntp_servers&method=get_ntp_peers
|
|
|
|
{
|
|
"get_ntp_servers": {
|
|
...
|
|
},
|
|
"get_ntp_peers": {
|
|
...
|
|
}
|
|
}
|
|
```
|
|
|
|
## Optional Arguments
|
|
|
|
The behavior of NAPALM drivers can be adjusted according to the [optional arguments](https://napalm.readthedocs.io/en/latest/support/index.html#optional-arguments). NetBox exposes those arguments using headers prefixed with `X-NAPALM-`. For example, the SSH port is changed to 2222 in this API call:
|
|
|
|
```
|
|
$ curl "http://localhost/api/dcim/devices/1/napalm/?method=get_environment" \
|
|
-H "Authorization: Token $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-H "Accept: application/json; indent=4" \
|
|
-H "X-NAPALM-port: 2222"
|
|
```
|