{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "DPS topology",
"type": "object",
"$id": "dcpower_0.1",
"$ref": "#/definitions/Main",
"definitions": {
"Main": {
"type": "object",
"properties": {
"Entities": {
"$ref": "#/definitions/Entities"
},
"Topology": {
"$ref": "#/definitions/Topology"
},
"Policies": {
"$ref": "#/definitions/Policies"
}
}
},
"Entities": {
"description": "List of data center entities",
"type": "array",
"items": {
"$ref": "#/definitions/Entity"
},
"uniqueItems": true
},
"Topology": {
"description": "Root topology container",
"type": "object",
"properties": {
"Name": {
"description": "Name of the topology being defined in this file",
"type": "string",
"minLength": 1
},
"Entities": {
"description": "List of data center relations (entities connectivity)",
"type": "array",
"items": {
"$ref": "#/definitions/TopologyEntity"
},
"uniqueItems": true
}
},
"required": [
"Name"
]
},
"TopologyEntity": {
"description": "A reference to an entity, optional properties of the entity within the topology, and the connected entities",
"oneOf": [
{
"type": "object",
"properties": {
"Name": {
"type": "string",
"description": "Reference to an already defined entity"
},
"FeedTag": {
"type": "string",
"description": "Identifier for the power feed supplying this entity"
},
"Children": {
"$ref": "#/definitions/TopologyLinks"
}
},
"required": ["Name"]
},
{
"allOf": [
{
"$ref": "#/definitions/Entity"
},
{
"type": "object",
"properties": {
"FeedTag": {
"type": "string",
"description": "Identifier for the power feed supplying this entity"
},
"Children": {
"$ref": "#/definitions/TopologyLinks"
}
}
}
]
}
]
},
"TopologyLinks": {
"description": "List of child entity names for a given parent",
"type": "array",
"items": {
"description": "Child entity name",
"type": "string",
"minLength": 1
},
"minItems": 1
},
"Entity": {
"description": "A datacenter entity",
"oneOf": [
{
"$ref": "#/definitions/PowerDomain"
},
{
"$ref": "#/definitions/PowerDistribution"
},
{
"$ref": "#/definitions/PowerSupply"
},
{
"$ref": "#/definitions/ComputerSystem"
}
]
},
"PowerValue": {
"type": "object",
"description": "Represents a specific non-negative power value",
"properties": {
"Value": {
"description": "Numerical power value",
"type": "number",
"exclusiveMinimum": 0
},
"Type": {
"description": "Power value unit type",
"type": "string",
"enum": [
"W",
"kW"
]
}
},
"required": [
"Value",
"Type"
],
"additionalProperties": false
},
"Policies": {
"description": "List of power policies that can be applied to entities",
"type": "array",
"items": {
"$ref": "#/definitions/Policy"
},
"uniqueItems": true
},
"Policy": {
"description": "Power policy definition",
"type": "object",
"required": [ "Name", "Limits" ],
"properties": {
"Name": {
"description": "Name of the power policy",
"type": "string"
},
"Limits": {
"description": "List of power limits that can be applied to entities",
"type": "array",
"items": {
"type": "object",
"required": [ "ElementType", "PowerLimit" ],
"properties": {
"ElementType": {
"type": "string",
"enum": [ "Node", "GPU", "CPU", "Memory" ],
"description": "Type of entity to which the power limit applies"
},
"PowerLimit": {
"description": "Power limit value",
"$ref": "#/definitions/PowerLimit"
}
}
},
"uniqueItems": true,
"minItems": 1
},
"additionalProperties": false
}
},
"PowerLimit": {
"type": "object",
"description": "Represents a specific non-negative power limit value",
"properties": {
"Watts": {
"type": "number",
"description": "Power limit in watts",
"exclusiveMinimum": 0
},
"Percentage": {
"type": "number",
"description": "Power limit as a percentage of the total power capacity",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"oneOf": [
{
"required": [ "Watts" ]
},
{
"required": [ "Percentage" ]
}
],
"additionalProperties": false
},
"PowerDomain": {
"description": "DPS power domain definition",
"type": "object",
"properties": {
"Type": {
"description": "DPS type disambiguator",
"type": "string",
"enum": [
"PowerDomain"
]
},
"Name": {
"description": "Unique name of the entity",
"type": "string"
},
"Constraints": {
"description": "Power domain constraints definition",
"type": "object",
"properties": {
"PowerValue": {
"description": "Maximum power domain limit",
"$ref": "#/definitions/PowerValue"
},
"PowerFactor": {
"description": "Power modifier to express loss during transition through this component",
"type": "number"
}
},
"required": [
"PowerValue"
]
},
"Redfish": {
"description": "Reference to underlying Redfish definition",
"$ref": "#/definitions/RedfishPowerDomain"
}
},
"required": [
"Type",
"Name"
]
},
"PowerDistribution": {
"description": "DPS power distribution definition",
"type": "object",
"properties": {
"Type": {
"description": "DPS type disambiguator",
"type": "string",
"enum": [
"PowerDistribution"
]
},
"Name": {
"description": "Unique name of the entity",
"type": "string"
},
"Model": {
"description": "Code model name that represents this entity",
"type": "string",
"minLength": 1
},
"Redfish": {
"description": "Reference to underlying Redfish definition",
"$ref": "#/definitions/RedfishPowerDistribution"
}
},
"required": [
"Type",
"Name"
]
},
"PowerSupply": {
"description": "DPS power supply definition",
"type": "object",
"properties": {
"Type": {
"description": "DPS type disambiguator",
"type": "string",
"enum": [
"PowerSupply"
]
},
"Name": {
"description": "Unique name of the entity",
"type": "string"
},
"Model": {
"description": "Code model name that represents this entity",
"type": "string",
"minLength": 1
},
"Redfish": {
"description": "Reference to underlying Redfish definition",
"$ref": "#/definitions/RedfishPowerSupply"
}
},
"required": [
"Type",
"Name"
]
},
"ComputerSystem": {
"description": "DPS computer system definition",
"type": "object",
"properties": {
"Type": {
"description": "DPS type disambiguator",
"type": "string",
"enum": [
"ComputerSystem"
]
},
"Name": {
"description": "Unique name of the entity",
"type": "string"
},
"Model": {
"description": "Code model name that represents this entity",
"type": "string",
"minLength": 1
},
"Policy": {
"description": "Default policy applied to this entity",
"type": "string"
},
"Redfish": {
"description": "Reference to underlying Redfish definition",
"$ref": "#/definitions/RedfishComputerSystem"
}
},
"required": [
"Type",
"Name"
]
},
"RedfishPowerDomain": {
"$ref": "file://redfish-schema-pack-v1.schema.json#/definitions/PowerDomain"
},
"RedfishPowerDistribution": {
"$ref": "file://redfish-schema-pack-v1.schema.json#/definitions/PowerDistribution"
},
"RedfishPowerSupply": {
"$ref": "file://redfish-schema-pack-v1.schema.json#/definitions/PowerSupply"
},
"RedfishComputerSystem": {
"$ref": "file://redfish-schema-pack-v1.schema.json#/definitions/ComputerSystem"
}
}
}