Entities

Entities

Overview

Entities represent actual physical equipment instances in your datacenter - specific servers, power distribution units, GPUs, switches, and other hardware components. Each entity is a concrete instantiation of a device specification, configured with real-world details like BMC endpoints and site-specific constraints.

Entity Structure

Each entity defines:

  • Name - Unique identifier (e.g., “node001”, “rack-pdu-a1”)
  • Type - Device category from device specification
  • Model - Specific device model from device specification
  • Redfish - BMC endpoint configuration for management
  • Policy - Default power policy (optional)
  • Constraints - Site-specific power limits (optional)
  • StaticLoad - Fixed power consumption (optional)

Entity Types and Examples

Compute Entities

Compute Nodes (ComputerSystem):

{
  "Type": "ComputerSystem",
  "Model": "DGX_H100",
  "Name": "node001",
  "Policy": "Node-High",
  "Redfish": {
    "@odata.type": "#ComputerSystem.v1_23_0.ComputerSystem",
    "@odata.id": "/node001",
    "Id": "node001",
    "URL": "https://node001-bmc.example.com",
    "SecretName": "node001"
  }
}

Power Distribution Entities

Power Domains (top-level power sources):

{
  "Type": "PowerDomain",
  "Name": "PD-A",
  "Constraints": {
    "PowerValue": {"Value": 1150000, "Type": "W"},
    "PowerFactor": 0.9
  },
  "Redfish": {
    "@odata.type": "#PowerDomain.v1_2_2.PowerDomain",
    "@odata.id": "/PD-A",
    "Id": "PD-A"
  }
}

Rack PDUs (power distribution units):

{
  "Type": "PowerDistribution",
  "Model": "RackPDU95_57500W",
  "Name": "rPDU-A1-001",
  "StaticLoad": {"Value": 3400, "Type": "W"},
  "Redfish": {
    "@odata.type": "#PowerDistribution.v1_4_0.PowerDistribution",
    "@odata.id": "/rPDU-A1-001",
    "Id": "rPDU-A1-001",
    "EquipmentType": "RackPDU"
  }
}

Redfish Integration

Compute entities include Redfish configuration for BMC communication:

"Redfish": {
  "@odata.type": "#ComputerSystem.v1_23_0.ComputerSystem",
  "@odata.id": "/node001",
  "Id": "node001",
  "URL": "https://node001-bmc.example.com",
  "SecretName": "node001"
}
  • @odata.type - Redfish schema type identifier
  • @odata.id - Redfish resource identifier path
  • Id - Unique identifier for the Redfish resource
  • URL - BMC endpoint address (hostname or IP)
  • SecretName - Reference to stored authentication credentials

Power Configuration

Constraints

Specify power limitations and efficiency:

"Constraints": {
  "PowerValue": {"Value": 1150000, "Type": "W"},
  "PowerFactor": 0.9
}

Static Load

Add fixed power consumption from unmanaged devices:

"StaticLoad": {"Value": 3400, "Type": "W"}

Example: Complete Entity Definition

{
  "Entities": [
    {
      "Type": "PowerDomain",
      "Name": "PD-A",
      "Constraints": {
        "PowerValue": {"Value": 1150000, "Type": "W"},
        "PowerFactor": 0.9
      },
      "Redfish": {
        "@odata.type": "#PowerDomain.v1_2_2.PowerDomain",
        "@odata.id": "/PD-A",
        "Id": "PD-A"
      }
    },
    {
      "Type": "PowerDistribution",
      "Model": "RackPDU95_57500W",
      "Name": "rPDU-A1-001",
      "StaticLoad": {"Value": 3400, "Type": "W"},
      "Redfish": {
        "@odata.type": "#PowerDistribution.v1_4_0.PowerDistribution",
        "@odata.id": "/rPDU-A1-001",
        "Id": "rPDU-A1-001",
        "EquipmentType": "RackPDU"
      }
    },
    {
      "Type": "ComputerSystem",
      "Model": "DGX_H100",
      "Name": "node001",
      "Policy": "Node-High",
      "Redfish": {
        "@odata.type": "#ComputerSystem.v1_23_0.ComputerSystem",
        "@odata.id": "/node001",
        "Id": "node001",
        "URL": "https://node001-bmc.example.com",
        "SecretName": "node001"
      }
    }
  ]
}

BMC Credentials

Entity BMC access requires secure credential management through secrets:

# Store BMC credentials
kubectl create secret generic node001 \
  --from-literal=username=admin \
  --from-literal=password=secret123

# Entity references the secret
"Redfish": {
  "@odata.type": "#ComputerSystem.v1_23_0.ComputerSystem",
  "@odata.id": "/node001",
  "Id": "node001",
  "URL": "https://node001-bmc.example.com",
  "SecretName": "node001"
}

Entity Generation

There are multiple ways that entities can be imported into DPS.

Manual Definition

Define entities explicitly in topology JSON files:

# Import entities from topology file
dpsctl topology import datacenter.json

BCM Integration

For Base Cluster Manager environments, DPS can auto-generate entities:

# Generate entities from BCM
dpsctl topology generate-entities --from-bcm

Usage

Entities are imported as part of topology files and can be queried through dpsctl:

# Import entities and topology
dpsctl topology import datacenter.json

# List entities
dpsctl entity list

# Show entity details
dpsctl entity get node001

Further Reading