Nautobot Integration
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
flowchart LR
DPS_UI["DPS UI"] -->|gRPC| DPS_Server["DPS Server"]
dpsctl["dpsctl (CLI)"] -->|gRPC| DPS_Server
DPS_Server -->|REST API| Nautobot["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 nautobotConfirm 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 -dThe 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