Prerequisites
Prerequisites
Before implementing grid integration with DPS NvGrid, ensure the following are in place.
DPS Infrastructure
Required infrastructure:
- DPS server running and accessible with NvGrid service enabled
- Active topology with datacenter entities configured
- Power policies and resource groups defined
- Authentication credentials configured for API access
Verification:
# List topologies
dpsctl topology list
# Verify NvGrid service
dpsctl --host api.dps --port 443 --insecure-tls-skip-verify nvgrid get-metadata
# Test API connectivity
dpsctl --host api.dps --port 443 --insecure-tls-skip-verify check connection
# Test with grpcurl (optional)
grpcurl -insecure api.dps:443 nvidia.dcpower.v1.NvGrid/GetStatusWebhook Security Configuration
Configure webhook URL whitelist to control which endpoints can receive power event notifications.
Server Configuration:
Add authorized webhook URLs to DPS Helm values:
# values.yaml
dps:
nvgrid:
webhook:
whitelist:
- "https://grid-solution.example.com/nvgrid/webhook"
- "https://monitoring.example.com/api/"
- "http://localhost:8080/"
- "http://host.docker.internal:8181"
concurrency: 32
callTimeout: 1mApply configuration:
helm upgrade dps ./helm/dps \
--namespace dps \
--values values.yaml \
--reuse-valuesWhitelist Validation:
- RegisterWebhook API validates URLs against whitelist during registration
- Non-whitelisted URLs are rejected with error: “webhook URL not whitelisted”
- Failed validation attempts are logged for security auditing
Whitelist Matching Rules:
The whitelist supports flexible URL matching patterns:
dps:
nvgrid:
webhook:
whitelist:
# Exact URL match
- "https://grid.example.com/webhook"
# Path prefix match (allows any path under /api/)
- "https://grid.example.com/api/"
# Development endpoints
- "http://localhost:8080/"
- "http://127.0.0.1:8080/"
- "http://host.docker.internal:8181"Matching Components:
- Scheme: Must match (http vs https)
- Hostname: Must match exactly
- Port: Must match (443 vs 8080)
- Path: Prefix matching supported (trailing
/matches all sub-paths) - Query Parameters: Whitelisted params must be present in request URL
- Fragment: Must match if specified
Example:
Whitelist: https://grid.example.com/api/
- ✅ Matches:
https://grid.example.com/api/webhooks/nvgrid - ✅ Matches:
https://grid.example.com/api/v1/power - ❌ Rejected:
https://grid.example.com/other/path - ❌ Rejected:
http://grid.example.com/api/(scheme mismatch) - ❌ Rejected:
https://grid.example.com:8080/api/(port mismatch)
Development Environment
Required development tools:
- gRPC development tools for chosen programming language
- Protocol buffer compiler for message generation
- DPS API definitions accessible from
api/v1/nvgrid.proto
Client code generation:
# Python
python3 -m grpc_tools.protoc \
-I ./api/v1 \
--python_out=./generated \
--grpc_python_out=./generated \
./api/v1/nvgrid.proto
# Go
protoc --go_out=. --go-grpc_out=. api/v1/nvgrid.protoTesting Infrastructure
Testing environment requirements:
- DPS simulator environment running
- Test topology with representative hardware configuration
- Webhook endpoint for receiving power event notifications
Simulator Environment:
The DPS simulator environment includes BMC and BCM simulators that emulate hardware responses for testing.
Next Steps
With prerequisites in place, proceed to:
- Core Concepts - Understand architectural principles
- API Specification - Review API methods and messages
- Managing Power Constraints - Schedule load targets
- Monitoring Power Events - Implement webhook receivers