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/GetStatus

Webhook 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: 1m

Apply configuration:

helm upgrade dps ./helm/dps \
  --namespace dps \
  --values values.yaml \
  --reuse-values

Whitelist 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.proto

Testing 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:

  1. Core Concepts - Understand architectural principles
  2. API Specification - Review API methods and messages
  3. Managing Power Constraints - Schedule load targets
  4. Monitoring Power Events - Implement webhook receivers