Nautobot Integration#
Note
The authoritative procedure for importing devices from an external inventory is Importing External Inventory, which covers both Nautobot and Base Command Manager and includes the guided import workflow. Start there.
This page covers the Helm configuration and the Nautobot-side prerequisites that the task guide assumes are already in place.
Nautobot serves as the authoritative device inventory source for DPS, allowing operators to import physical devices directly from their existing DCIM into DPS for power management. If enabled, DPS can query Nautobot’s REST API on demand to discover devices by location, rack, or device type and map them into DPS entities.
Prerequisites#
A running Nautobot instance reachable from the DPS pod (HTTP or HTTPS).
dps.nautobot.enabled: truein your Helm values.A Nautobot API token with read access to DCIM, stored in a Kubernetes Secret and referenced via
dps.nautobot.tokenSecret.
How DPS Integrates with Nautobot#
DPS can import devices from Nautobot on demand through either the DPS UI or the dpsctl CLI. When triggered, the DPS server receives an import request over gRPC, then uses its built-in Nautobot client to query the Nautobot REST API with the specified filters. Nautobot responds with the matching devices from its DCIM database, and DPS automatically maps these devices into entities for power management.
Configuration Steps#
Refer to the Deployment Guide for how to configure Nautobot
Troubleshooting#
1. Verify Helm values are set correctly
helm get values <release> -n <namespace> | grep -A 10 nautobot
Confirm enabled: true, url is non-empty and includes the scheme (https://), and either tokenSecret.existingSecret or tokenSecret.secretName is set
2. Confirm the token Secret exists in the cluster
kubectl get secret <secret-name> -n <namespace>
kubectl get secret <secret-name> -n <namespace> -o jsonpath='{.data.token}' | base64 -d
The decoded value should be a non-empty Nautobot API token.
3. Test connectivity to Nautobot from the DPS pod network namespace
Deploy an ephemeral container sharing the same network namespace:
kubectl debug -it -n <namespace> <dps-pod> \
--image=curlimages/curl \
--target=dps-server -- \
curl -sf -H "Authorization: Token <token>" \
https://nautobot.company.com/
A non-200 response indicates a network configuration preventing DPS from reaching the Nautobot REST API
4. Check DPS server logs for startup connectivity errors
kubectl logs -n <namespace> <dps-pod> | grep -i nautobot