fix: read a Supermicro X10 with only the OOB license over Redfish (0.3.1)

First run against real hardware over Redfish: an X10DRL-i (BMC 3.91) with
SFT-OOB-LIC. Its Redfish tree is recorded under
tests/fixtures/supermicro-x10drl-i-3.91/redfish, scrubbed.

- A resource refused for want of a further license (403 OemLicenseNotPassed)
  no longer fails the getter. Storage then falls back to SimpleStorage. The
  firmware list falls back to the BMC and BIOS versions when UpdateService
  is withheld.
- get_device_warnings reports bmc_license_partial with the licenses and the
  withheld parts (drives, firmware inventory).
- A placeholder system model ("Super Server") is replaced by the board
  (PartNumber, else the chassis model).
This commit is contained in:
Christian Manivong committed 2026-10-17 09:32:09 +02:00
1 parent 6c60f7ac60
commit adf152ee12
78 files changed
+3228 -15

No files matched your search

+19
View File
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
## [0.3.1] - 2026-10-17
First run against real hardware over Redfish: a Supermicro X10DRL-i (BMC 3.91) with the
SFT-OOB-LIC license only, recorded under `tests/fixtures/supermicro-x10drl-i-3.91/redfish/`.
### Fixed
- A resource the BMC refuses for want of a further license (403 `OemLicenseNotPassed`) no
longer fails the whole getter. The transport raises `RedfishFeatureLicenseError` (a
`RedfishAuthError`); `get_hardware_inventory` reads the drives from `SimpleStorage`
instead of a withheld `Storage`, and `get_firmware_inventory` falls back to the BMC
firmware (`Managers/{id}`) and the BIOS (`Systems/{id}.BiosVersion`) when `UpdateService`
is withheld.
- The model of a system that reports a placeholder ("Super Server" on Supermicro) is the
board: the system's `PartNumber`, else the chassis model.
### Added
- `get_device_warnings` reports `bmc_license_partial` with the licenses the BMC names and the
parts it withholds (`drives`, `firmware inventory`).
## [0.3.0] - 2026-10-17 ## [0.3.0] - 2026-10-17
### Added ### Added
+11 -3
View File
@@ -33,9 +33,17 @@ curl -sk -u <user>:<password> https://<bmc>/redfish/v1/Systems/1 | python3 -m js
- Older Supermicro BMCs shipped with `ADMIN`/`ADMIN`; newer ones have a unique password on - Older Supermicro BMCs shipped with `ADMIN`/`ADMIN`; newer ones have a unique password on
a label. A BMC still on `ADMIN`/`ADMIN` is a test case for netOrk's default-credential a label. A BMC still on `ADMIN`/`ADMIN` is a test case for netOrk's default-credential
audit (NetOrk/netork#141). audit (NetOrk/netork#141).
- Some out-of-band features (BIOS update and BIOS settings through the BMC) need a - Verified on the X10DRL-i (3.91): **without any license Redfish is refused altogether**, even
Supermicro license (SFT-OOB-LIC / SFT-DCMS-SINGLE). Reading and power control should not. the service root (403 `OemLicenseNotPassed`, naming SUM DCMS OOB). **With SFT-OOB-LIC**
Which resources the X10 omits without a license shows up in the recorded responses. the service root, systems, processors, memory, chassis, thermal, power, managers, network
protocol, accounts and logs answer, and so does `ComputerSystem.Reset`. `Systems/1/Storage`
and `UpdateService` still want DCMS (SFT-DCMS-SINGLE); the driver then reads no drives,
takes the BMC and BIOS versions from `Managers/1` and `Systems/1`, and reports
`bmc_license_partial`. `SimpleStorage` answers but is empty.
- `Systems/1.Model` is "Super Server" on every board; the board is `Systems/1.PartNumber` and
`Chassis/1.Model`, which the driver reports as the model instead.
- The system UUID over Redfish is the server's SMBIOS UUID (MAC-based on the X10), unlike the
IPMI FRU UUID.
- Vendor-specific data sits under `Oem.Supermicro` in several resources. - Vendor-specific data sits under `Oem.Supermicro` in several resources.
## IPMI on the same board ## IPMI on the same board
+1 -1
View File
@@ -7,5 +7,5 @@ takes the first driver class of this package. ``IpmiDriver`` lives in
from napalm_redfish.driver import RedfishDriver from napalm_redfish.driver import RedfishDriver
__version__ = "0.3.0" __version__ = "0.3.1"
__all__ = ["RedfishDriver"] __all__ = ["RedfishDriver"]
+85 -10
View File
@@ -67,6 +67,7 @@ from napalm_redfish.parsers import (
from napalm_redfish.parsers.common import link, link_list, odata_id from napalm_redfish.parsers.common import link, link_list, odata_id
from napalm_redfish.transport import ( from napalm_redfish.transport import (
RedfishError, RedfishError,
RedfishFeatureLicenseError,
RedfishLicenseError, RedfishLicenseError,
RedfishNotFound, RedfishNotFound,
RedfishTransport, RedfishTransport,
@@ -87,6 +88,11 @@ _PROTOCOLS = {
"virtual_media": "VirtualMedia", "virtual_media": "VirtualMedia",
} }
_SEVERITIES = ("OK", "Warning", "Critical") _SEVERITIES = ("OK", "Warning", "Critical")
#: The parts a BMC may withhold for want of a license, in the order they are named.
_WITHHELD_ORDER = ("drives", "firmware inventory")
#: Models a system reports when it has none of its own. Supermicro's Redfish calls every
#: system "Super Server"; the board is the system's PartNumber and the chassis model.
_PLACEHOLDER_MODELS = frozenset({"super server", "default string", "to be filled by o.e.m."})
def _timestamp(created: str | None) -> float | None: def _timestamp(created: str | None) -> float | None:
@@ -162,6 +168,8 @@ class RedfishDriver(HealthMetricsMixin, ManagementControllerDriver):
) )
self._cache: _JsonDict = {} self._cache: _JsonDict = {}
self._license_refused: RedfishLicenseError | None = None self._license_refused: RedfishLicenseError | None = None
#: Parts the BMC withholds for want of a license, with the licenses it names.
self._withheld: dict[str, str] = {}
# --- connection ---------------------------------------------------------------------- # --- connection ----------------------------------------------------------------------
@@ -171,6 +179,7 @@ class RedfishDriver(HealthMetricsMixin, ManagementControllerDriver):
``get_device_warnings`` says which license is missing. Every other getter raises. ``get_device_warnings`` says which license is missing. Every other getter raises.
""" """
self._license_refused = None self._license_refused = None
self._withheld = {}
try: try:
self.transport.open() self.transport.open()
except RedfishLicenseError as exc: except RedfishLicenseError as exc:
@@ -234,6 +243,15 @@ class RedfishDriver(HealthMetricsMixin, ManagementControllerDriver):
def _chassis_raw(self) -> _JsonDict: def _chassis_raw(self) -> _JsonDict:
return self._linked_or_first("chassis", "Chassis", "Chassis") return self._linked_or_first("chassis", "Chassis", "Chassis")
def _server_model(self) -> str:
"""The system's model; for a placeholder, the board (PartNumber or chassis model)."""
raw = self._system_raw()
model = (parse_system(raw)["model"] or "").strip()
if model.lower() not in _PLACEHOLDER_MODELS:
return model
board = raw.get("PartNumber") or self._chassis_raw().get("Model") or ""
return str(board).strip() or model
def _members_of(self, resource: _JsonDict, key: str) -> list[_JsonDict]: def _members_of(self, resource: _JsonDict, key: str) -> list[_JsonDict]:
"""Members of the collection ``resource[key]`` links; [] if not linked.""" """Members of the collection ``resource[key]`` links; [] if not linked."""
path = link(resource, key) path = link(resource, key)
@@ -271,7 +289,7 @@ class RedfishDriver(HealthMetricsMixin, ManagementControllerDriver):
return { return {
"uptime": -1.0, # Redfish has no uptime "uptime": -1.0, # Redfish has no uptime
"vendor": system["manufacturer"] or "", "vendor": system["manufacturer"] or "",
"model": system["model"] or "", "model": self._server_model(),
"hostname": hostname, "hostname": hostname,
"fqdn": fqdn, "fqdn": fqdn,
"os_version": manager["firmware_version"] or "", "os_version": manager["firmware_version"] or "",
@@ -355,12 +373,41 @@ class RedfishDriver(HealthMetricsMixin, ManagementControllerDriver):
return {"chassis_id": "", "community": communities, "contact": "", "location": ""} return {"chassis_id": "", "community": communities, "contact": "", "location": ""}
def get_device_warnings(self) -> list[_JsonDict]: def get_device_warnings(self) -> list[_JsonDict]:
"""Raw signals for netOrk's warning catalog; presentation is netOrk's.""" """Raw signals for netOrk's warning catalog; presentation is netOrk's.
``bmc_license_required`` when the BMC refuses Redfish altogether;
``bmc_license_partial`` when it answers but withholds parts (drives, the firmware
inventory) for want of a license. The parts are probed here, so the warning does
not depend on which getters ran before.
"""
refused = self._license_refused refused = self._license_refused
if refused is None: if refused is not None:
return []
return [{"code": "bmc_license_required", return [{"code": "bmc_license_required",
"meta": {"licenses": refused.licenses, "message": refused.detail}}] "meta": {"licenses": refused.licenses, "message": refused.detail}}]
self._probe_withheld()
if not self._withheld:
return []
licenses = sorted({name for names in self._withheld.values() for name in names.split()})
parts = [part for part in _WITHHELD_ORDER if part in self._withheld]
return [{"code": "bmc_license_partial",
"meta": {"licenses": " ".join(licenses), "parts": parts}}]
def _withhold(self, part: str, exc: RedfishFeatureLicenseError) -> None:
LOG.info("%s: %s withheld by the BMC: %s", self.hostname, part, exc)
self._withheld[part] = exc.licenses
def _probe_withheld(self) -> None:
"""Ask for the license-gated resources once, so ``_withheld`` is complete."""
storage = link(self._system_raw(), "Storage")
if storage and "drives" not in self._withheld:
try:
self.transport.get(storage)
except RedfishFeatureLicenseError as exc:
self._withhold("drives", exc)
except RedfishError:
pass
if "firmware inventory" not in self._withheld:
self._update_service()
# --- role: power ------------------------------------------------------------------- # --- role: power -------------------------------------------------------------------
@@ -434,7 +481,7 @@ class RedfishDriver(HealthMetricsMixin, ManagementControllerDriver):
system = parse_system(raw) system = parse_system(raw)
return { return {
"manufacturer": system["manufacturer"] or "", "manufacturer": system["manufacturer"] or "",
"model": system["model"] or "", "model": self._server_model(),
"serial_number": system["serial_number"] or "", "serial_number": system["serial_number"] or "",
"system_uuid": (system["uuid"] or "").lower(), "system_uuid": (system["uuid"] or "").lower(),
"cpus": self._cpus(raw), "cpus": self._cpus(raw),
@@ -471,18 +518,31 @@ class RedfishDriver(HealthMetricsMixin, ManagementControllerDriver):
}) })
return dimms return dimms
def _drives(self, system: _JsonDict) -> list[_JsonDict]: def _storage_drives(self, system: _JsonDict) -> list[_JsonDict] | None:
"""Drives from ``Storage``; ``None`` when it is not linked or withheld."""
if not link(system, "Storage"):
return None
try:
storages = self._members_of(system, "Storage")
except RedfishFeatureLicenseError as exc:
self._withhold("drives", exc)
return None
parsed: list[_JsonDict] = [] parsed: list[_JsonDict] = []
if link(system, "Storage"):
seen: set[str] = set() seen: set[str] = set()
for storage in self._members_of(system, "Storage"): for storage in storages:
for path in parse_storage(storage)["drive_paths"]: for path in parse_storage(storage)["drive_paths"]:
if path not in seen: if path not in seen:
seen.add(path) seen.add(path)
drive = self.transport.get_optional(path) drive = self.transport.get_optional(path)
if drive is not None: if drive is not None:
parsed.append(parse_drive(drive)) parsed.append(parse_drive(drive))
else: return parsed
def _drives(self, system: _JsonDict) -> list[_JsonDict]:
parsed = self._storage_drives(system)
if parsed is None:
# Older services, and a Supermicro X10 that withholds Storage without DCMS.
parsed = []
for storage in self._members_of(system, "SimpleStorage"): for storage in self._members_of(system, "SimpleStorage"):
parsed.extend(parse_simple_storage(storage)["drives"]) parsed.extend(parse_simple_storage(storage)["drives"])
return [{ return [{
@@ -569,10 +629,25 @@ class RedfishDriver(HealthMetricsMixin, ManagementControllerDriver):
reverse=True) reverse=True)
return entries[:limit] return entries[:limit]
def _update_service(self) -> _JsonDict | None:
try:
return self._service("UpdateService")
except RedfishFeatureLicenseError as exc:
self._withhold("firmware inventory", exc)
return None
def get_firmware_inventory(self) -> list[_JsonDict]: def get_firmware_inventory(self) -> list[_JsonDict]:
service = self._service("UpdateService") """``UpdateService/FirmwareInventory``. Where the BMC withholds it for want of a
license, the BMC's own firmware and the BIOS, which the manager and the system
state themselves."""
service = self._update_service()
if service is None: if service is None:
if "firmware inventory" not in self._withheld:
return [] return []
bmc = parse_manager(self._manager_raw())["firmware_version"]
bios = self._system_raw().get("BiosVersion")
return [{"name": name, "version": version, "updateable": None}
for name, version in (("BMC", bmc), ("BIOS", bios)) if version]
items = [parse_firmware(raw) for raw in self._members_of(service, "FirmwareInventory")] items = [parse_firmware(raw) for raw in self._members_of(service, "FirmwareInventory")]
return [{"name": fw["name"] or fw["id"] or "", "version": fw["version"] or "", return [{"name": fw["name"] or fw["id"] or "", "version": fw["version"] or "",
"updateable": fw["updateable"]} for fw in items] "updateable": fw["updateable"]} for fw in items]
+18
View File
@@ -73,6 +73,20 @@ class RedfishAuthError(RedfishError):
"""Login failed, or the account may not read the resource (HTTP 401/403).""" """Login failed, or the account may not read the resource (HTTP 401/403)."""
class RedfishFeatureLicenseError(RedfishAuthError):
"""One resource is refused until a vendor license is activated, the rest answers.
A Supermicro X10 with only the OOB license reads ``Systems`` and ``Managers`` but
refuses ``Systems/1/Storage`` and ``UpdateService`` for want of DCMS.
"""
def __init__(self, message: str, *, licenses: str = "", status: int | None = None,
path: str | None = None):
super().__init__(message, status=status, path=path)
#: The licenses the service names, e.g. "DCMS"; empty when it names none.
self.licenses = licenses
class RedfishHTTPError(RedfishError): class RedfishHTTPError(RedfishError):
"""The service answered with an HTTP error status.""" """The service answered with an HTTP error status."""
@@ -336,6 +350,10 @@ class RedfishTransport:
return data return data
detail = _error_message(data) detail = _error_message(data)
message = f"{method} {path}: HTTP {status}" + (f": {detail}" if detail else "") message = f"{method} {path}: HTTP {status}" + (f": {detail}" if detail else "")
if status == 403 and any(i.endswith(LICENSE_REFUSED) for i in _message_ids(data)):
raise RedfishFeatureLicenseError(
message, licenses=" ".join(" ".join(_message_args(data)).split()),
status=status, path=path)
if status in (401, 403): if status in (401, 403):
raise RedfishAuthError(message, status=status, path=path) raise RedfishAuthError(message, status=status, path=path)
if status == 404: if status == 404:
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "napalm-redfish" name = "napalm-redfish"
version = "0.3.0" version = "0.3.1"
description = "NAPALM driver for server baseboard management controllers over DMTF Redfish" description = "NAPALM driver for server baseboard management controllers over DMTF Redfish"
readme = "README.md" readme = "README.md"
license = { file = "LICENSE" } license = { file = "LICENSE" }
+9
View File
@@ -10,3 +10,12 @@ ipmi/ Read over IPMI 2.0 (pyghmi 1.6, lanplus) with a BMC account, 2026-10-13.
firmware (get_firmware), inventory (get_inventory), sensors (get_sensor_data, firmware (get_firmware), inventory (get_inventory), sensors (get_sensor_data,
each SensorReading's attributes), health (get_health), event_log (get_event_log). each SensorReading's attributes), health (get_health), event_log (get_event_log).
Serial numbers, the system UUID, MAC addresses and IPs are replaced by placeholders. Serial numbers, the system UUID, MAC addresses and IPs are replaced by placeholders.
redfish/ Read over Redfish with a BMC account on 2026-10-17, after an SFT-OOB-LIC license was
activated (no DCMS). Every resource reachable by @odata.id links from the service root
was fetched with GET, except JsonSchemas, Registries, SessionService/Sessions and
actions: 69 paths, each as <path below /redfish/v1>/index.json, unmodified apart from
scrubbing. STATUS.json lists the paths that did not answer 200 (Storage and
UpdateService need DCMS; IKVM and the virtual media CfgCD were refused as well); their
files hold the error body the BMC sent. Serial numbers, UUIDs, MAC addresses, IPs, the
host name and the SNMP communities are replaced by placeholders. The server was on.
@@ -0,0 +1,18 @@
{
"@odata.context": "/redfish/v1/$metadata#ManagerAccount.ManagerAccount",
"@odata.id": "/redfish/v1/AccountService/Accounts/2",
"@odata.type": "#ManagerAccount.v1_0_0.ManagerAccount",
"Description": "User Account",
"Enabled": true,
"Id": "2",
"Links": {
"Role": {
"@odata.id": "/redfish/v1/AccountService/Roles/Administrator"
}
},
"Locked": false,
"Name": "User Account",
"Password": "null",
"RoleId": "Administrator",
"UserName": "ADMIN"
}
@@ -0,0 +1,12 @@
{
"@odata.context": "/redfish/v1/$metadata#ManagerAccountCollection.ManagerAccountCollection",
"@odata.id": "/redfish/v1/AccountService/Accounts",
"@odata.type": "#ManagerAccountCollection.ManagerAccountCollection",
"Members": [
{
"@odata.id": "/redfish/v1/AccountService/Accounts/2"
}
],
"Members@odata.count": 1,
"Name": "Accounts Collection"
}
@@ -0,0 +1,20 @@
{
"@odata.context": "/redfish/v1/$metadata#Role.Role",
"@odata.id": "/redfish/v1/AccountService/Roles/Administrator",
"@odata.type": "#Role.v1_0_0.Role",
"AssignedPrivileges": [
"Login",
"ConfigureManager",
"ConfigureUsers",
"ConfigureSelf",
"ConfigureComponents"
],
"Description": "Administrator User Role",
"Id": "Administrator",
"IsPredefined": true,
"Name": "User Role",
"OemPrivileges": [
"OemClearLog",
"OemPowerControl"
]
}
@@ -0,0 +1,15 @@
{
"@odata.context": "/redfish/v1/$metadata#Role.Role",
"@odata.id": "/redfish/v1/AccountService/Roles/Operator",
"@odata.type": "#Role.v1_0_0.Role",
"AssignedPrivileges": [
"Login",
"ConfigureSelf",
"ConfigureComponents"
],
"Description": "Operator User Role",
"Id": "Operator",
"IsPredefined": true,
"Name": "User Role",
"OemPrivileges": []
}
@@ -0,0 +1,14 @@
{
"@odata.context": "/redfish/v1/$metadata#Role.Role",
"@odata.id": "/redfish/v1/AccountService/Roles/ReadOnly",
"@odata.type": "#Role.v1_0_0.Role",
"AssignedPrivileges": [
"Login",
"ConfigureSelf"
],
"Description": "ReadOnly User Role",
"Id": "ReadOnly",
"IsPredefined": true,
"Name": "User Role",
"OemPrivileges": []
}
@@ -0,0 +1,18 @@
{
"@odata.context": "/redfish/v1/$metadata#RoleCollection.RoleCollection",
"@odata.id": "/redfish/v1/AccountService/Roles",
"@odata.type": "#RoleCollection.RoleCollection",
"Members": [
{
"@odata.id": "/redfish/v1/AccountService/Roles/Administrator"
},
{
"@odata.id": "/redfish/v1/AccountService/Roles/Operator"
},
{
"@odata.id": "/redfish/v1/AccountService/Roles/ReadOnly"
}
],
"Members@odata.count": 3,
"Name": "Roles Collection"
}
@@ -0,0 +1,25 @@
{
"@odata.context": "/redfish/v1/$metadata#AccountService.AccountService",
"@odata.id": "/redfish/v1/AccountService",
"@odata.type": "#AccountService.v1_0_0.AccountService",
"AccountLockoutCounterResetAfter": 30,
"AccountLockoutDuration": 30,
"AccountLockoutThreshold": 5,
"Accounts": {
"@odata.id": "/redfish/v1/AccountService/Accounts"
},
"AuthFailureLoggingThreshold": 3,
"Description": "Account Service",
"Id": "AccountService",
"MaxPasswordLength": 19,
"MinPasswordLength": 8,
"Name": "Account Service",
"Roles": {
"@odata.id": "/redfish/v1/AccountService/Roles"
},
"ServiceEnabled": true,
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
@@ -0,0 +1,532 @@
{
"@odata.context": "/redfish/v1/$metadata#Power.Power",
"@odata.id": "/redfish/v1/Chassis/1/Power",
"@odata.type": "#Power.v1_1_0.Power",
"Id": "Power",
"Name": "Power",
"Oem": {},
"PowerControl": [
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/PowerControl/0",
"@odata.type": "#Power.v1_0_0.PowerControl",
"MemberId": "0",
"Name": "System Power Control",
"Oem": {},
"PowerConsumedWatts": 90,
"PowerMetrics": {
"AverageConsumedWatts": 148,
"IntervalInMin": 5,
"MaxConsumedWatts": 191,
"MinConsumedWatts": 90
},
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/1"
},
{
"@odata.id": "/redfish/v1/Systems/1/Processors/2"
}
],
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
],
"PowerSupplies": [
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/PowerSupplies/0",
"@odata.type": "#Power.v1_1_0.PowerSupply",
"FirmwareVersion": "REV1.3",
"LastPowerOutputWatts": 131,
"LineInputVoltage": 230,
"LineInputVoltageType": "ACMidLine",
"MemberId": "0",
"Model": "PWS-406P-1R",
"Name": "Power Supply Bay 1",
"Oem": {},
"PowerSupplyType": "AC",
"Redundancy": [
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Redundancy/0"
}
],
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 200,
"SerialNumber": "SN00000001",
"Status": {
"Health": "OK",
"State": "Enabled"
}
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/PowerSupplies/1",
"@odata.type": "#Power.v1_1_0.PowerSupply",
"MemberId": "1",
"Name": "Power Supply Bay 2",
"Oem": {},
"SensorNumber": 201,
"Status": {
"State": "Absent"
}
}
],
"Redundancy": [
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Redundancy/0",
"@odata.type": "#Redundancy.v1_2_0.Redundancy",
"MaxNumSupported": 4,
"MemberId": "0",
"MinNumNeeded": 1,
"Mode": "Failover",
"Name": "PowerSupply Redundancy Group 1",
"RedundancySet": [
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/PowerSupplies/0"
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/PowerSupplies/1"
}
],
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
],
"Voltages": [
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/0",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 10.299,
"LowerThresholdFatal": 10.173,
"LowerThresholdNonCritical": 10.74,
"MaxReadingRange": 16.221,
"MemberId": "0",
"MinReadingRange": 0.156,
"Name": "12V",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 11.937,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 48,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 13.26,
"UpperThresholdFatal": 13.386,
"UpperThresholdNonCritical": 12.945
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/1",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 4.298,
"LowerThresholdFatal": 4.246,
"LowerThresholdNonCritical": 4.48,
"MaxReadingRange": 6.794,
"MemberId": "1",
"MinReadingRange": 0.164,
"Name": "5VCC",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 4.922,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 49,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 5.546,
"UpperThresholdFatal": 5.598,
"UpperThresholdNonCritical": 5.39
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/2",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 2.823,
"LowerThresholdFatal": 2.789,
"LowerThresholdNonCritical": 2.959,
"MaxReadingRange": 4.421,
"MemberId": "2",
"MinReadingRange": 0.086,
"Name": "3.3VCC",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 3.35,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 50,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 3.656,
"UpperThresholdFatal": 3.69,
"UpperThresholdNonCritical": 3.554
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/3",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 2.43,
"LowerThresholdFatal": 2.326,
"LowerThresholdNonCritical": 2.508,
"MaxReadingRange": 6.694,
"MemberId": "3",
"MinReadingRange": 0.064,
"Name": "VBAT",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 2.69,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 51,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 3.782,
"UpperThresholdFatal": 3.886,
"UpperThresholdNonCritical": 3.678
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/4",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 1.26,
"LowerThresholdFatal": 1.242,
"LowerThresholdNonCritical": 1.395,
"MaxReadingRange": 2.439,
"MemberId": "4",
"MinReadingRange": 0.144,
"Name": "Vcpu1",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 1.818,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/1"
}
],
"SensorNumber": 52,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 2.088,
"UpperThresholdFatal": 2.106,
"UpperThresholdNonCritical": 1.899
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/5",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 1.26,
"LowerThresholdFatal": 1.242,
"LowerThresholdNonCritical": 1.395,
"MaxReadingRange": 2.439,
"MemberId": "5",
"MinReadingRange": 0.144,
"Name": "Vcpu2",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 1.818,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/2"
}
],
"SensorNumber": 54,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 2.088,
"UpperThresholdFatal": 2.106,
"UpperThresholdNonCritical": 1.899
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/6",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 0.975,
"LowerThresholdFatal": 0.948,
"LowerThresholdNonCritical": 1.047,
"MaxReadingRange": 2.37,
"MemberId": "6",
"MinReadingRange": 0.075,
"Name": "VDIMMAB",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 1.2,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 53,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 1.425,
"UpperThresholdFatal": 1.443,
"UpperThresholdNonCritical": 1.344
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/7",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 0.975,
"LowerThresholdFatal": 0.948,
"LowerThresholdNonCritical": 1.047,
"MaxReadingRange": 2.37,
"MemberId": "7",
"MinReadingRange": 0.075,
"Name": "VDIMMCD",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 1.2,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 55,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 1.425,
"UpperThresholdFatal": 1.443,
"UpperThresholdNonCritical": 1.344
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/8",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 0.975,
"LowerThresholdFatal": 0.948,
"LowerThresholdNonCritical": 1.047,
"MaxReadingRange": 2.37,
"MemberId": "8",
"MinReadingRange": 0.075,
"Name": "VDIMMEF",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 1.2,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 58,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 1.425,
"UpperThresholdFatal": 1.443,
"UpperThresholdNonCritical": 1.344
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/9",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 0.975,
"LowerThresholdFatal": 0.948,
"LowerThresholdNonCritical": 1.047,
"MaxReadingRange": 2.37,
"MemberId": "9",
"MinReadingRange": 0.075,
"Name": "VDIMMGH",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 1.2,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 59,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 1.425,
"UpperThresholdFatal": 1.443,
"UpperThresholdNonCritical": 1.344
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/10",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 4.298,
"LowerThresholdFatal": 4.246,
"LowerThresholdNonCritical": 4.48,
"MaxReadingRange": 6.768,
"MemberId": "10",
"MinReadingRange": 0.138,
"Name": "5VSB",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 4.896,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 56,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 5.546,
"UpperThresholdFatal": 5.598,
"UpperThresholdNonCritical": 5.39
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/11",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 2.823,
"LowerThresholdFatal": 2.789,
"LowerThresholdNonCritical": 2.959,
"MaxReadingRange": 4.353,
"MemberId": "11",
"MinReadingRange": 0.018,
"Name": "3.3VSB",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 3.214,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 57,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 3.656,
"UpperThresholdFatal": 3.69,
"UpperThresholdNonCritical": 3.554
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/12",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 1.347,
"LowerThresholdFatal": 1.32,
"LowerThresholdNonCritical": 1.401,
"MaxReadingRange": 2.418,
"MemberId": "12",
"MinReadingRange": 0.123,
"Name": "1.5V PCH",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 1.5,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 60,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 1.671,
"UpperThresholdFatal": 1.698,
"UpperThresholdNonCritical": 1.644
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/13",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 1.047,
"LowerThresholdFatal": 1.02,
"LowerThresholdNonCritical": 1.092,
"MaxReadingRange": 2.343,
"MemberId": "13",
"MinReadingRange": 0.048,
"Name": "1.2V BMC",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 1.209,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 61,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 1.371,
"UpperThresholdFatal": 1.398,
"UpperThresholdNonCritical": 1.344
},
{
"@odata.id": "/redfish/v1/Chassis/1/Power#/Voltages/14",
"@odata.type": "#Power.v1_0_0.Voltage",
"LowerThresholdCritical": 0.897,
"LowerThresholdFatal": 0.87,
"LowerThresholdNonCritical": 0.942,
"MaxReadingRange": 2.373,
"MemberId": "14",
"MinReadingRange": 0.078,
"Name": "1.05V PCH",
"PhysicalContext": "VoltageRegulator",
"ReadingVolts": 1.05,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 62,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 1.221,
"UpperThresholdFatal": 1.248,
"UpperThresholdNonCritical": 1.194
}
]
}
@@ -0,0 +1,768 @@
{
"@odata.context": "/redfish/v1/$metadata#Thermal.Thermal",
"@odata.id": "/redfish/v1/Chassis/1/Thermal",
"@odata.type": "#Thermal.v1_4_0.Thermal",
"Fans": [
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/0",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 0,
"LowerThresholdFatal": 0,
"LowerThresholdNonCritical": 0,
"MaxReadingRange": 0,
"MemberId": "0",
"MinReadingRange": 0,
"Name": "FAN1",
"PhysicalContext": "Fan",
"Reading": 0,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 65,
"Status": {
"State": "Absent"
},
"UpperThresholdCritical": 0,
"UpperThresholdFatal": 0,
"UpperThresholdNonCritical": 0
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/1",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 500,
"LowerThresholdFatal": 300,
"LowerThresholdNonCritical": 700,
"MaxReadingRange": 25600,
"MemberId": "1",
"MinReadingRange": 200,
"Name": "FAN2",
"PhysicalContext": "Fan",
"Reading": 6900,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 66,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 25400,
"UpperThresholdFatal": 25500,
"UpperThresholdNonCritical": 25300
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/2",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 500,
"LowerThresholdFatal": 300,
"LowerThresholdNonCritical": 700,
"MaxReadingRange": 25600,
"MemberId": "2",
"MinReadingRange": 200,
"Name": "FAN3",
"PhysicalContext": "Fan",
"Reading": 7500,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 67,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 25400,
"UpperThresholdFatal": 25500,
"UpperThresholdNonCritical": 25300
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/3",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 500,
"LowerThresholdFatal": 300,
"LowerThresholdNonCritical": 700,
"MaxReadingRange": 25600,
"MemberId": "3",
"MinReadingRange": 200,
"Name": "FAN4",
"PhysicalContext": "Fan",
"Reading": 7000,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 68,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 25400,
"UpperThresholdFatal": 25500,
"UpperThresholdNonCritical": 25300
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/4",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 0,
"LowerThresholdFatal": 0,
"LowerThresholdNonCritical": 0,
"MaxReadingRange": 0,
"MemberId": "4",
"MinReadingRange": 0,
"Name": "FAN5",
"PhysicalContext": "Fan",
"Reading": 0,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 69,
"Status": {
"State": "Absent"
},
"UpperThresholdCritical": 0,
"UpperThresholdFatal": 0,
"UpperThresholdNonCritical": 0
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/5",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 0,
"LowerThresholdFatal": 0,
"LowerThresholdNonCritical": 0,
"MaxReadingRange": 0,
"MemberId": "5",
"MinReadingRange": 0,
"Name": "FAN6",
"PhysicalContext": "Fan",
"Reading": 0,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 70,
"Status": {
"State": "Absent"
},
"UpperThresholdCritical": 0,
"UpperThresholdFatal": 0,
"UpperThresholdNonCritical": 0
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/6",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 0,
"LowerThresholdFatal": 0,
"LowerThresholdNonCritical": 0,
"MaxReadingRange": 0,
"MemberId": "6",
"MinReadingRange": 0,
"Name": "FANA",
"PhysicalContext": "Fan",
"Reading": 0,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 71,
"Status": {
"State": "Absent"
},
"UpperThresholdCritical": 0,
"UpperThresholdFatal": 0,
"UpperThresholdNonCritical": 0
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/7",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 500,
"LowerThresholdFatal": 300,
"LowerThresholdNonCritical": 700,
"MaxReadingRange": 25600,
"MemberId": "7",
"MinReadingRange": 200,
"Name": "FANB",
"PhysicalContext": "Fan",
"Reading": 5100,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 72,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 25400,
"UpperThresholdFatal": 25500,
"UpperThresholdNonCritical": 25300
}
],
"Id": "Thermal",
"Name": "Thermal",
"Temperatures": [
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/0",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 0,
"LowerThresholdFatal": 0,
"LowerThresholdNonCritical": 0,
"MaxReadingRangeTemp": 87,
"MemberId": "0",
"MinReadingRangeTemp": -2,
"Name": "CPU1 Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 33,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/1"
}
],
"SensorNumber": 1,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 85,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/1",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 0,
"LowerThresholdFatal": 0,
"LowerThresholdNonCritical": 0,
"MaxReadingRangeTemp": 87,
"MemberId": "1",
"MinReadingRangeTemp": -2,
"Name": "CPU2 Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 41,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/2"
}
],
"SensorNumber": 2,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 85,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/2",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -8,
"LowerThresholdFatal": -11,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 102,
"MemberId": "2",
"MinReadingRangeTemp": -13,
"Name": "PCH Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 28,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 10,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 95,
"UpperThresholdFatal": 100,
"UpperThresholdNonCritical": 90
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/3",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 92,
"MemberId": "3",
"MinReadingRangeTemp": -11,
"Name": "System Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 18,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 11,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/4",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 92,
"MemberId": "4",
"MinReadingRangeTemp": -11,
"Name": "Peripheral Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 39,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 12,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/5",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 107,
"MemberId": "5",
"MinReadingRangeTemp": -11,
"Name": "Vcpu1VRM Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 28,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 16,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 100,
"UpperThresholdFatal": 105,
"UpperThresholdNonCritical": 95
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/6",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 107,
"MemberId": "6",
"MinReadingRangeTemp": -11,
"Name": "Vcpu2VRM Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 40,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 17,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 100,
"UpperThresholdFatal": 105,
"UpperThresholdNonCritical": 95
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/7",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 107,
"MemberId": "7",
"MinReadingRangeTemp": -11,
"Name": "VmemABVRM Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 25,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 18,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 100,
"UpperThresholdFatal": 105,
"UpperThresholdNonCritical": 95
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/8",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 107,
"MemberId": "8",
"MinReadingRangeTemp": -11,
"Name": "VmemCDVRM Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 23,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 19,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 100,
"UpperThresholdFatal": 105,
"UpperThresholdNonCritical": 95
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/9",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 107,
"MemberId": "9",
"MinReadingRangeTemp": -11,
"Name": "VmemEFVRM Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 37,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 20,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 100,
"UpperThresholdFatal": 105,
"UpperThresholdNonCritical": 95
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/10",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 107,
"MemberId": "10",
"MinReadingRangeTemp": -11,
"Name": "VmemGHVRM Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 35,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 21,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 100,
"UpperThresholdFatal": 105,
"UpperThresholdNonCritical": 95
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/11",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "11",
"MinReadingRangeTemp": -1,
"Name": "P1-DIMMA1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 26,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/1"
}
],
"SensorNumber": 176,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/12",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "12",
"MinReadingRangeTemp": -1,
"Name": "P1-DIMMB1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 24,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/1"
}
],
"SensorNumber": 180,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/13",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "13",
"MinReadingRangeTemp": -1,
"Name": "P1-DIMMC1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 25,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/1"
}
],
"SensorNumber": 184,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/14",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "14",
"MinReadingRangeTemp": -1,
"Name": "P1-DIMMD1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 22,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/1"
}
],
"SensorNumber": 188,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/15",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "15",
"MinReadingRangeTemp": -1,
"Name": "P2-DIMME1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 27,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/2"
}
],
"SensorNumber": 208,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/16",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "16",
"MinReadingRangeTemp": -1,
"Name": "P2-DIMMF1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 28,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/2"
}
],
"SensorNumber": 212,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/17",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "17",
"MinReadingRangeTemp": -1,
"Name": "P2-DIMMG1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 29,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/2"
}
],
"SensorNumber": 216,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/18",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "18",
"MinReadingRangeTemp": -1,
"Name": "P2-DIMMH1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 30,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/2"
}
],
"SensorNumber": 220,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
}
]
}
@@ -0,0 +1,51 @@
{
"@odata.context": "/redfish/v1/$metadata#Chassis.Chassis",
"@odata.id": "/redfish/v1/Chassis/1",
"@odata.type": "#Chassis.v1_4_0.Chassis",
"AssetTag": "",
"ChassisType": "RackMount",
"Id": "1",
"IndicatorLED": "Off",
"Links": {
"ComputerSystems": [
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"ManagedBy": [
{
"@odata.id": "/redfish/v1/Managers/1"
}
]
},
"Manufacturer": "Supermicro",
"Model": "X10DRL-i",
"Name": "Computer System Chassis",
"Oem": {
"Supermicro": {
"@odata.type": "#SmcChassisExtensions.v1_0_0.Chassis",
"BoardID": "0x831",
"BoardSerialNumber": "ZM000S000001",
"GUID": "43303031-4D53-0CC4-7A72-6F1300000000"
}
},
"PartNumber": "",
"PhysicalSecurity": {
"IntrusionSensor": "Normal",
"IntrusionSensorNumber": 170,
"IntrusionSensorReArm": "Manual"
},
"Power": {
"@odata.id": "/redfish/v1/Chassis/1/Power"
},
"SKU": "",
"SerialNumber": "",
"Status": {
"Health": "OK",
"HealthRollup": "OK",
"State": "Enabled"
},
"Thermal": {
"@odata.id": "/redfish/v1/Chassis/1/Thermal"
}
}
@@ -0,0 +1,12 @@
{
"@odata.context": "/redfish/v1/$metadata#ChassisCollection.ChassisCollection",
"@odata.id": "/redfish/v1/Chassis",
"@odata.type": "#ChassisCollection.ChassisCollection",
"Members": [
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"Members@odata.count": 1,
"Name": "Chassis Collection"
}
@@ -0,0 +1,8 @@
{
"@odata.context": "/redfish/v1/$metadata#EventDestinationCollection.EventDestinationCollection",
"@odata.id": "/redfish/v1/EventService/Subscriptions",
"@odata.type": "#EventDestinationCollection.EventDestinationCollection",
"Members": [],
"Members@odata.count": 0,
"Name": "Event Subscriptions Collection"
}
@@ -0,0 +1,38 @@
{
"@odata.context": "/redfish/v1/$metadata#EventService.EventService",
"@odata.id": "/redfish/v1/EventService",
"@odata.type": "#EventService.v1_1_0.EventService",
"Actions": {
"#EventService.SubmitTestEvent": {
"EventType@Redfish.AllowableValues": [
"StatusChange",
"ResourceUpdated",
"ResourceAdded",
"ResourceRemoved",
"Alert"
],
"target": "/redfish/v1/EventService/Actions/EventService.SubmitTestEvent"
},
"Oem": {}
},
"DeliveryRetryAttempts": 3,
"DeliveryRetryIntervalSeconds": 60,
"EventTypesForSubscription": [
"StatusChange",
"ResourceUpdated",
"ResourceAdded",
"ResourceRemoved",
"Alert"
],
"Id": "EventService",
"Name": "Event Service",
"Oem": {},
"ServiceEnabled": true,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"Subscriptions": {
"@odata.id": "/redfish/v1/EventService/Subscriptions"
}
}
@@ -0,0 +1,8 @@
{
"@odata.context": "/redfish/v1/$metadata#RoleGroupCollection.RoleGroupCollection",
"@odata.id": "/redfish/v1/Managers/1/ActiveDirectory/RoleGroups",
"@odata.type": "#RoleGroupCollection.RoleGroupCollection",
"Members": [],
"Members@odata.count": 0,
"Name": "Role Group Collection"
}
@@ -0,0 +1,18 @@
{
"@odata.context": "/redfish/v1/$metadata#ActiveDirectory.ActiveDirectory",
"@odata.id": "/redfish/v1/Managers/1/ActiveDirectory",
"@odata.type": "#ActiveDirectory.v1_0_0.ActiveDirectory",
"AuthenticationEnabled": false,
"AuthenticationOverSSLEnabled": false,
"DCSAddress1": "0.0.0.0",
"DCSAddress2": "0.0.0.0",
"DCSAddress3": "0.0.0.0",
"Id": "Active Directory",
"Name": "Active Directory",
"PortNumber": 389,
"RoleGroups": {
"@odata.id": "/redfish/v1/Managers/1/ActiveDirectory/RoleGroups"
},
"Timeout": 0,
"UserDomainName": ""
}
@@ -0,0 +1,56 @@
{
"@odata.context": "/redfish/v1/$metadata#EthernetInterface.EthernetInterface",
"@odata.id": "/redfish/v1/Managers/1/EthernetInterfaces/1",
"@odata.type": "#EthernetInterface.v1_0_0.EthernetInterface",
"AutoNeg": true,
"Description": "Management Network Interface",
"FullDuplex": true,
"HostName": "server01",
"IPv4Addresses": [
{
"Address": "192.0.2.150",
"AddressOrigin": "DHCP",
"Gateway": "192.0.2.1",
"SubnetMask": "255.255.255.0"
}
],
"IPv6AddressPolicyTable": [
{
"Label": 0,
"Precedence": 50,
"Prefix": "::1/128"
}
],
"IPv6Addresses": [
{
"Address": "fe80::200:5eff:fe00:5313",
"AddressOrigin": "SLAAC",
"AddressState": "Preferred",
"PrefixLength": 64
}
],
"IPv6DefaultGateway": "fe80::200:5eff:fe00:5313",
"IPv6StaticAddresses": [
{
"Address": "fe80::200:5eff:fe00:5313",
"PrefixLength": 64
}
],
"Id": "1",
"InterfaceEnabled": true,
"MACAddress": "00:00:5e:00:53:13",
"MTUSize": 1500,
"Name": "EthernetInterface",
"NameServers": [
"192.0.2.1"
],
"SpeedMbps": 1000,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"VLAN": {
"VLANEnable": false,
"VLANId": 0
}
}
@@ -0,0 +1,13 @@
{
"@odata.context": "/redfish/v1/$metadata#EthernetInterfaceCollection.EthernetInterfaceCollection",
"@odata.id": "/redfish/v1/Managers/1/EthernetInterfaces",
"@odata.type": "#EthernetInterfaceCollection.EthernetInterfaceCollection",
"Description": "Collection of EthernetInterfaces for this Manager",
"Members": [
{
"@odata.id": "/redfish/v1/Managers/1/EthernetInterfaces/1"
}
],
"Members@odata.count": 1,
"Name": "Ethernet Network Interface Collection"
}
@@ -0,0 +1,14 @@
{
"@odata.context": "/redfish/v1/$metadata#FanMode.FanMode",
"@odata.id": "/redfish/v1/Managers/1/FanMode",
"@odata.type": "#FanMode.v1_0_0.FanMode",
"Id": "Fan Mode",
"Mode": "Optimal",
"Mode@Redfish.AllowableValues": [
"Standard",
"FullSpeed",
"Optimal",
"HeavyIO"
],
"Name": "FanMode"
}
@@ -0,0 +1,20 @@
{
"error": {
"@Message.ExtendedInfo": [
{
"Message": "Not licensed to perform this request. The following licenses DCMS were needed",
"MessageArgs": [
"DCMS "
],
"MessageId": "Base.v1_4_0.OemLicenseNotPassed",
"RelatedProperties": [
""
],
"Resolution": "Please activate at least one license in above message.",
"Severity": "Warning"
}
],
"Message": "A general error has occurred. See ExtendedInfo for more information.",
"code": "Base.v1_4_0.GeneralError"
}
}
@@ -0,0 +1,8 @@
{
"@odata.context": "/redfish/v1/$metadata#FilterRuleCollection.FilterRuleCollection",
"@odata.id": "/redfish/v1/Managers/1/IPAccessControl/FilterRules",
"@odata.type": "#FilterRuleCollection.FilterRuleCollection",
"Members": [],
"Members@odata.count": 0,
"Name": "Filter Rule Collection"
}
@@ -0,0 +1,11 @@
{
"@odata.context": "/redfish/v1/$metadata#IPAccessControl.IPAccessControl",
"@odata.id": "/redfish/v1/Managers/1/IPAccessControl",
"@odata.type": "#IPAccessControl.v1_0_0.IPAccessControl",
"FilterRules": {
"@odata.id": "/redfish/v1/Managers/1/IPAccessControl/FilterRules"
},
"Id": "IP Access Control",
"Name": "IP Access Control",
"ServiceEnabled": false
}
@@ -0,0 +1,14 @@
{
"@odata.context": "/redfish/v1/$metadata#LDAP.LDAP",
"@odata.id": "/redfish/v1/Managers/1/LDAP",
"@odata.type": "#LDAP.v1_0_0.LDAP",
"Id": "LDAP",
"LDAPAuthOverSSL": false,
"LDAPDN": "",
"LDAPEnabled": false,
"LDAPPassword": "",
"LDAPPortNumber": 389,
"LDAPSearchbase": "",
"LDAPServerIP": "0.0.0.0",
"Name": "LDAP"
}
@@ -0,0 +1,13 @@
{
"@odata.context": "/redfish/v1/$metadata#MouseMode.MouseMode",
"@odata.id": "/redfish/v1/Managers/1/MouseMode",
"@odata.type": "#MouseMode.v1_0_0.MouseMode",
"Id": "Mouse Mode",
"Mode": "Absolute",
"Mode@Redfish.AllowableValues": [
"Absolute",
"Relative",
"Single"
],
"Name": "MouseMode"
}
@@ -0,0 +1,11 @@
{
"@odata.context": "/redfish/v1/$metadata#NTP.NTP",
"@odata.id": "/redfish/v1/Managers/1/NTP",
"@odata.type": "#NTP.v1_0_0.NTP",
"DaylightSavingTime": true,
"Id": "NTP",
"NTPEnable": true,
"Name": "NTP Service",
"PrimaryNTPServer": "192.0.2.1",
"SecondaryNTPServer": ""
}
@@ -0,0 +1,42 @@
{
"@odata.context": "/redfish/v1/$metadata#ManagerNetworkProtocol.ManagerNetworkProtocol",
"@odata.id": "/redfish/v1/Managers/1/NetworkProtocol",
"@odata.type": "#ManagerNetworkProtocol.v1_0_0.ManagerNetworkProtocol",
"Description": "Manager Network Service Status",
"FQDN": "",
"HTTP": {
"Port": 80,
"ProtocolEnabled": true
},
"HTTPS": {
"Port": 443,
"ProtocolEnabled": true
},
"HostName": "server01",
"IPMI": {
"Port": 623,
"ProtocolEnabled": true
},
"Id": "NetworkProtocol",
"KVMIP": {
"Port": 5900,
"ProtocolEnabled": true
},
"Name": "Manager Network Protocol",
"SNMP": {
"Port": 161,
"ProtocolEnabled": true
},
"SSH": {
"Port": 22,
"ProtocolEnabled": true
},
"Status": {
"Health": "OK",
"State": "Enabled"
},
"VirtualMedia": {
"Port": 623,
"ProtocolEnabled": true
}
}
@@ -0,0 +1,11 @@
{
"@odata.context": "/redfish/v1/$metadata#RADIUS.RADIUS",
"@odata.id": "/redfish/v1/Managers/1/RADIUS",
"@odata.type": "#RADIUS.v1_0_1.RADIUS",
"Id": "RADIUS",
"Name": "RADIUS",
"RadiusEnabled": false,
"RadiusPortNumber": 1812,
"RadiusSecret": "null",
"RadiusServerIP": "0.0.0.0"
}
@@ -0,0 +1,8 @@
{
"@odata.context": "/redfish/v1/$metadata#SMCRAKP.SMCRAKP",
"@odata.id": "/redfish/v1/Managers/1/SMCRAKP",
"@odata.type": "#SMCRAKP.v1_0_0.SMCRAKP",
"Id": "SMC RAKP",
"Mode": "Disabled",
"Name": "SMCRAKP"
}
@@ -0,0 +1,13 @@
{
"@odata.context": "/redfish/v1/$metadata#SMTP.SMTP",
"@odata.id": "/redfish/v1/Managers/1/SMTP",
"@odata.type": "#SMTP.v1_0_0.SMTP",
"Id": "SMTP",
"Name": "SMTP",
"SmtpPassword": "null",
"SmtpPortNumber": 587,
"SmtpSSLEnabled": false,
"SmtpSenderAddress": "",
"SmtpServer": "",
"SmtpUserName": ""
}
@@ -0,0 +1,10 @@
{
"@odata.context": "/redfish/v1/$metadata#SNMPv2.SNMPv2",
"@odata.id": "/redfish/v1/Managers/1/SNMP/SNMPv2",
"@odata.type": "#SNMPv2.v1_0_0.SNMPv2",
"Id": "1",
"Name": "SNMPv2",
"ROCommunity": "community-ro",
"RWCommunity": "community-rw",
"Snmpv2Enabled": true
}
@@ -0,0 +1,21 @@
{
"@odata.context": "/redfish/v1/$metadata#SNMPv3.SNMPv3",
"@odata.id": "/redfish/v1/Managers/1/SNMP/SNMPv3",
"@odata.type": "#SNMPv3.v1_0_0.SNMPv3",
"AuthKey": "",
"AuthProtocol": "MD5",
"AuthProtocol@Redfish.AllowableValues": [
"SHA1",
"MD5"
],
"Id": "1",
"Name": "SNMPv3",
"PrivateKey": "",
"PrivateProtocol": "DES",
"PrivateProtocol@Redfish.AllowableValues": [
"AES",
"DES"
],
"Snmpv3Enabled": false,
"UserName": ""
}
@@ -0,0 +1,14 @@
{
"@odata.context": "/redfish/v1/$metadata#SNMP.SNMP",
"@odata.id": "/redfish/v1/Managers/1/SNMP",
"@odata.type": "#SNMP.v1_0_0.SNMP",
"Id": "1",
"Name": "SNMP",
"SNMPv2": {
"@odata.id": "/redfish/v1/Managers/1/SNMP/SNMPv2"
},
"SNMPv3": {
"@odata.id": "/redfish/v1/Managers/1/SNMP/SNMPv3"
},
"SnmpEnabled": true
}
@@ -0,0 +1,15 @@
{
"@odata.context": "/redfish/v1/$metadata#SerialInterface.SerialInterface",
"@odata.id": "/redfish/v1/Managers/1/SerialInterfaces/1",
"@odata.type": "#SerialInterface.v1_0_0.SerialInterface",
"BitRate": "115200",
"DataBits": "8",
"Description": "Serial over LAN",
"FlowControl": "None",
"Id": "1",
"InterfaceEnabled": true,
"Name": "SerialInterface",
"Parity": "None",
"SignalType": "Rs232",
"StopBits": "1"
}
@@ -0,0 +1,13 @@
{
"@odata.context": "/redfish/v1/$metadata#SerialInterfaceCollection.SerialInterfaceCollection",
"@odata.id": "/redfish/v1/Managers/1/SerialInterfaces",
"@odata.type": "#SerialInterfaceCollection.SerialInterfaceCollection",
"Description": "Collection of Serial Interfaces for this Manager",
"Members": [
{
"@odata.id": "/redfish/v1/Managers/1/SerialInterfaces/1"
}
],
"Members@odata.count": 1,
"Name": "Serial Interface Collection"
}
@@ -0,0 +1,8 @@
{
"@odata.context": "/redfish/v1/$metadata#Snooping.Snooping",
"@odata.id": "/redfish/v1/Managers/1/Snooping",
"@odata.type": "#Snooping.v1_0_0.Snooping",
"Id": "Snooping",
"Name": "Snooping",
"PostCode": "aa"
}
@@ -0,0 +1,10 @@
{
"@odata.context": "/redfish/v1/$metadata#Syslog.Syslog",
"@odata.id": "/redfish/v1/Managers/1/Syslog",
"@odata.type": "#Syslog.v1_0_0.Syslog",
"EnableSyslog": false,
"Id": "Syslog",
"Name": "Syslog",
"SyslogPortNumber": 0,
"SyslogServerIP": ""
}
@@ -0,0 +1,20 @@
{
"error": {
"@Message.ExtendedInfo": [
{
"Message": "Not licensed to perform this request. The following licenses DCMS were needed",
"MessageArgs": [
"DCMS "
],
"MessageId": "Base.v1_4_0.OemLicenseNotPassed",
"RelatedProperties": [
""
],
"Resolution": "Please activate at least one license in above message.",
"Severity": "Warning"
}
],
"Message": "A general error has occurred. See ExtendedInfo for more information.",
"code": "Base.v1_4_0.GeneralError"
}
}
@@ -0,0 +1,16 @@
{
"@odata.context": "/redfish/v1/$metadata#VirtualMediaCollection.VirtualMediaCollection",
"@odata.id": "/redfish/v1/Managers/1/VM1",
"@odata.type": "#VirtualMediaCollection.VirtualMediaCollection",
"Description": "Collection of Virtual Media for this System",
"Members@odata.count": 0,
"Name": "Virtual Media Collection",
"Oem": {
"Supermicro": {
"@odata.type": "#SmcVirtualMediaExtensions.v1_0_0.VirtualMediaCollection",
"VirtualMediaConfig": {
"@odata.id": "/redfish/v1/Managers/1/VM1/CfgCD"
}
}
}
}
@@ -0,0 +1,119 @@
{
"@odata.context": "/redfish/v1/$metadata#Manager.Manager",
"@odata.id": "/redfish/v1/Managers/1",
"@odata.type": "#Manager.v1_3_2.Manager",
"Actions": {
"#Manager.Reset": {
"target": "/redfish/v1/Managers/1/Actions/Manager.Reset"
},
"Oem": {
"#ManagerConfig.Reset": {
"target": "/redfish/v1/Managers/1/Actions/Oem/ManagerConfig.Reset"
}
}
},
"CommandShell": {
"ConnectTypesSupported": [
"SSH"
],
"MaxConcurrentSessions": 0,
"ServiceEnabled": true
},
"DateTime": "2026-10-17T09:24:32+01:00",
"DateTimeLocalOffset": "+01:00",
"Description": "BMC",
"EthernetInterfaces": {
"@odata.id": "/redfish/v1/Managers/1/EthernetInterfaces"
},
"FirmwareVersion": "3.91",
"GraphicalConsole": {
"ConnectTypesSupported": [
"KVMIP"
],
"MaxConcurrentSessions": 4,
"ServiceEnabled": true
},
"Id": "1",
"Links": {
"ManagerForChassis": [
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"ManagerForServers": [
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"Oem": {}
},
"ManagerType": "BMC",
"Model": "ASPEED",
"Name": "Manager",
"NetworkProtocol": {
"@odata.id": "/redfish/v1/Managers/1/NetworkProtocol"
},
"Oem": {
"Supermicro": {
"@odata.type": "#SmcManagerExtensions.v1_0_0.Manager",
"ActiveDirectory": {
"@odata.id": "/redfish/v1/Managers/1/ActiveDirectory"
},
"FanMode": {
"@odata.id": "/redfish/v1/Managers/1/FanMode"
},
"IKVM": {
"@odata.id": "/redfish/v1/Managers/1/IKVM"
},
"IPAccessControl": {
"@odata.id": "/redfish/v1/Managers/1/IPAccessControl"
},
"LDAP": {
"@odata.id": "/redfish/v1/Managers/1/LDAP"
},
"MouseMode": {
"@odata.id": "/redfish/v1/Managers/1/MouseMode"
},
"NTP": {
"@odata.id": "/redfish/v1/Managers/1/NTP"
},
"RADIUS": {
"@odata.id": "/redfish/v1/Managers/1/RADIUS"
},
"SMCRAKP": {
"@odata.id": "/redfish/v1/Managers/1/SMCRAKP"
},
"SMTP": {
"@odata.id": "/redfish/v1/Managers/1/SMTP"
},
"SNMP": {
"@odata.id": "/redfish/v1/Managers/1/SNMP"
},
"Snooping": {
"@odata.id": "/redfish/v1/Managers/1/Snooping"
},
"Syslog": {
"@odata.id": "/redfish/v1/Managers/1/Syslog"
}
}
},
"SerialConsole": {
"ConnectTypesSupported": [
"SSH",
"IPMI"
],
"MaxConcurrentSessions": 1,
"ServiceEnabled": true
},
"SerialInterfaces": {
"@odata.id": "/redfish/v1/Managers/1/SerialInterfaces"
},
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UUID": "00000000-0000-0000-0000-00005E005313",
"VirtualMedia": {
"@odata.id": "/redfish/v1/Managers/1/VM1"
}
}
@@ -0,0 +1,13 @@
{
"@odata.context": "/redfish/v1/$metadata#ManagerCollection.ManagerCollection",
"@odata.id": "/redfish/v1/Managers",
"@odata.type": "#ManagerCollection.ManagerCollection",
"Description": "Manager Collection",
"Members": [
{
"@odata.id": "/redfish/v1/Managers/1"
}
],
"Members@odata.count": 1,
"Name": "Manager Collection"
}
@@ -0,0 +1,6 @@
{
"/redfish/v1/Managers/1/IKVM": 403,
"/redfish/v1/Managers/1/VM1/CfgCD": 403,
"/redfish/v1/Systems/1/Storage": 403,
"/redfish/v1/UpdateService": 403
}
@@ -0,0 +1,17 @@
{
"@odata.context": "/redfish/v1/$metadata#SessionService.SessionService",
"@odata.id": "/redfish/v1/SessionService",
"@odata.type": "#SessionService.v1_0_0.SessionService",
"Description": "Session Service",
"Id": "SessionService",
"Name": "Session Service",
"ServiceEnabled": true,
"SessionTimeout": 300,
"Sessions": {
"@odata.id": "/redfish/v1/SessionService/Sessions"
},
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
@@ -0,0 +1,15 @@
{
"@odata.context": "/redfish/v1/$metadata#EthernetInterface.EthernetInterface",
"@odata.id": "/redfish/v1/Systems/1/EthernetInterfaces/1",
"@odata.type": "#EthernetInterface.v1_0_0.EthernetInterface",
"Description": "OnBoard #1",
"FQDN": "",
"Id": "1",
"MACAddress": "00:00:5e:00:53:4c",
"Name": "OnBoard LAN 1",
"SpeedMbps": 0,
"Status": {
"Health": "OK",
"State": "Disabled"
}
}
@@ -0,0 +1,15 @@
{
"@odata.context": "/redfish/v1/$metadata#EthernetInterface.EthernetInterface",
"@odata.id": "/redfish/v1/Systems/1/EthernetInterfaces/2",
"@odata.type": "#EthernetInterface.v1_0_0.EthernetInterface",
"Description": "OnBoard #2",
"FQDN": "",
"Id": "2",
"MACAddress": "00:00:5e:00:53:4d",
"Name": "OnBoard LAN 2",
"SpeedMbps": 0,
"Status": {
"Health": "OK",
"State": "Disabled"
}
}
@@ -0,0 +1,16 @@
{
"@odata.context": "/redfish/v1/$metadata#EthernetInterfaceCollection.EthernetInterfaceCollection",
"@odata.id": "/redfish/v1/Systems/1/EthernetInterfaces",
"@odata.type": "#EthernetInterfaceCollection.EthernetInterfaceCollection",
"Description": "Simple Network Collection",
"Members": [
{
"@odata.id": "/redfish/v1/Systems/1/EthernetInterfaces/1"
},
{
"@odata.id": "/redfish/v1/Systems/1/EthernetInterfaces/2"
}
],
"Members@odata.count": 2,
"Name": "Ethernet Network Interface Collection"
}
@@ -0,0 +1,35 @@
{
"@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry",
"@odata.id": "/redfish/v1/Systems/1/LogServices/Log1/Entries/1",
"@odata.type": "#LogEntry.v1_3_0.LogEntry",
"Created": "2026-09-30T17:07:31+01:00",
"EntryCode": "Deassert",
"EntryType": "Event",
"Id": "1",
"Links": {
"Oem": {},
"OriginOfCondition": {
"@odata.id": "/redfish/v1/Chassis/1/Power"
}
},
"Message": "[ PS2 Status ] Power Supply Failure",
"MessageArgs": [
"ArrayOfMessageArgs"
],
"Name": "Log Entry 1",
"Oem": {
"Supermicro": {
"@odata.type": "#SmcLogEntryExtensions.v1_0_0.LogEntry",
"RawEventData": {
"EventData1": "0xF1",
"EventData2": "0xFF",
"EventData3": "0xFF",
"EventDirAndType": "0xEF",
"SensorName": "PS2 Status",
"SensorType": "0x08"
}
}
},
"SensorNumber": 201,
"SensorType": "Power supply"
}
@@ -0,0 +1,32 @@
{
"@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry",
"@odata.id": "/redfish/v1/Systems/1/LogServices/Log1/Entries/2",
"@odata.type": "#LogEntry.v1_3_0.LogEntry",
"Created": "2026-10-17T09:21:22+01:00",
"EntryCode": "Assert",
"EntryType": "Event",
"Id": "2",
"Links": {
"Oem": {}
},
"Message": "[ OEM ] Activate Node Product Key",
"MessageArgs": [
"ArrayOfMessageArgs"
],
"Name": "Log Entry 2",
"Oem": {
"Supermicro": {
"@odata.type": "#SmcLogEntryExtensions.v1_0_0.LogEntry",
"RawEventData": {
"EventData1": "0x18",
"EventData2": "0x00",
"EventData3": "0xFF",
"EventDirAndType": "0x6F",
"SensorName": "OEM",
"SensorType": "0xCA"
}
}
},
"OemSensorType": "OOB",
"SensorNumber": 255
}
@@ -0,0 +1,75 @@
{
"@odata.context": "/redfish/v1/$metadata#LogEntryCollection.LogEntryCollection",
"@odata.id": "/redfish/v1/Systems/1/LogServices/Log1/Entries",
"@odata.type": "#LogEntryCollection.LogEntryCollection",
"Description": "Collection of Health Event Logs",
"Members": [
{
"@odata.id": "/redfish/v1/Systems/1/LogServices/Log1/Entries/1",
"@odata.type": "#LogEntry.v1_3_0.LogEntry",
"Created": "2026-09-30T17:07:31+01:00",
"EntryCode": "Deassert",
"EntryType": "Event",
"Id": "1",
"Links": {
"Oem": {},
"OriginOfCondition": {
"@odata.id": "/redfish/v1/Chassis/1/Power"
}
},
"Message": "[ PS2 Status ] Power Supply Failure",
"MessageArgs": [
"ArrayOfMessageArgs"
],
"Name": "Log Entry 1",
"Oem": {
"Supermicro": {
"@odata.type": "#SmcLogEntryExtensions.v1_0_0.LogEntry",
"RawEventData": {
"EventData1": "0xF1",
"EventData2": "0xFF",
"EventData3": "0xFF",
"EventDirAndType": "0xEF",
"SensorName": "PS2 Status",
"SensorType": "0x08"
}
}
},
"SensorNumber": 201,
"SensorType": "Power supply"
},
{
"@odata.id": "/redfish/v1/Systems/1/LogServices/Log1/Entries/2",
"@odata.type": "#LogEntry.v1_3_0.LogEntry",
"Created": "2026-10-17T09:21:22+01:00",
"EntryCode": "Assert",
"EntryType": "Event",
"Id": "2",
"Links": {
"Oem": {}
},
"Message": "[ OEM ] Activate Node Product Key",
"MessageArgs": [
"ArrayOfMessageArgs"
],
"Name": "Log Entry 2",
"Oem": {
"Supermicro": {
"@odata.type": "#SmcLogEntryExtensions.v1_0_0.LogEntry",
"RawEventData": {
"EventData1": "0x18",
"EventData2": "0x00",
"EventData3": "0xFF",
"EventDirAndType": "0x6F",
"SensorName": "OEM",
"SensorType": "0xCA"
}
}
},
"OemSensorType": "OOB",
"SensorNumber": 255
}
],
"Members@odata.count": 2,
"Name": "Health Event Log Service Collection"
}
@@ -0,0 +1,26 @@
{
"@odata.context": "/redfish/v1/$metadata#LogService.LogService",
"@odata.id": "/redfish/v1/Systems/1/LogServices/Log1",
"@odata.type": "#LogService.v1_1_0.LogService",
"Actions": {
"#LogService.ClearLog": {
"target": "/redfish/v1/Systems/1/LogServices/Log1/Actions/LogService.ClearLog"
},
"Oem": {}
},
"DateTime": "2026-10-17T09:24:36+01:00",
"DateTimeLocalOffset": "+01:00",
"Entries": {
"@odata.id": "/redfish/v1/Systems/1/LogServices/Log1/Entries"
},
"Id": "Log1",
"MaxNumberOfRecords": 512,
"Name": "Health Event Log Service",
"Oem": {},
"OverWritePolicy": "WrapsWhenFull",
"ServiceEnabled": true,
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
@@ -0,0 +1,13 @@
{
"@odata.context": "/redfish/v1/$metadata#LogServiceCollection.LogServiceCollection",
"@odata.id": "/redfish/v1/Systems/1/LogServices",
"@odata.type": "#LogServiceCollection.LogServiceCollection",
"Description": "Collection of Health Event Logs",
"Members": [
{
"@odata.id": "/redfish/v1/Systems/1/LogServices/Log1"
}
],
"Members@odata.count": 1,
"Name": "Health Event Log Service Collection"
}
@@ -0,0 +1,35 @@
{
"@odata.context": "/redfish/v1/$metadata#Memory.Memory",
"@odata.id": "/redfish/v1/Systems/1/Memory/1",
"@odata.type": "#Memory.v1_1_0.Memory",
"AllowedSpeedsMHz": [
2133
],
"BusWidthBits": 72,
"CapacityMiB": 16384,
"DataWidthBits": 64,
"Description": "Memory",
"DeviceLocator": "P1-DIMMA1",
"Id": "1",
"Manufacturer": "Samsung",
"MemoryDeviceType": "DDR4",
"MemoryLocation": {
"Channel": 0,
"MemoryController": 0,
"Slot": 0,
"Socket": 0
},
"MemoryMedia": [
"DRAM"
],
"MemoryType": "DRAM",
"Name": "P1-DIMMA1",
"OperatingSpeedMhz": 1866,
"PartNumber": "M393A2G40DB0-CPB",
"RankCount": 1,
"SerialNumber": "SN00000002",
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
@@ -0,0 +1,35 @@
{
"@odata.context": "/redfish/v1/$metadata#Memory.Memory",
"@odata.id": "/redfish/v1/Systems/1/Memory/2",
"@odata.type": "#Memory.v1_1_0.Memory",
"AllowedSpeedsMHz": [
2133
],
"BusWidthBits": 72,
"CapacityMiB": 16384,
"DataWidthBits": 64,
"Description": "Memory",
"DeviceLocator": "P1-DIMMB1",
"Id": "2",
"Manufacturer": "Samsung",
"MemoryDeviceType": "DDR4",
"MemoryLocation": {
"Channel": 1,
"MemoryController": 0,
"Slot": 0,
"Socket": 0
},
"MemoryMedia": [
"DRAM"
],
"MemoryType": "DRAM",
"Name": "P1-DIMMB1",
"OperatingSpeedMhz": 1866,
"PartNumber": "M393A2G40DB0-CPB",
"RankCount": 2,
"SerialNumber": "SN00000003",
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
@@ -0,0 +1,35 @@
{
"@odata.context": "/redfish/v1/$metadata#Memory.Memory",
"@odata.id": "/redfish/v1/Systems/1/Memory/3",
"@odata.type": "#Memory.v1_1_0.Memory",
"AllowedSpeedsMHz": [
2133
],
"BusWidthBits": 72,
"CapacityMiB": 16384,
"DataWidthBits": 64,
"Description": "Memory",
"DeviceLocator": "P1-DIMMC1",
"Id": "3",
"Manufacturer": "Micron",
"MemoryDeviceType": "DDR4",
"MemoryLocation": {
"Channel": 2,
"MemoryController": 0,
"Slot": 0,
"Socket": 0
},
"MemoryMedia": [
"DRAM"
],
"MemoryType": "DRAM",
"Name": "P1-DIMMC1",
"OperatingSpeedMhz": 1866,
"PartNumber": "36ASF2G72PZ-2G1A2",
"RankCount": 3,
"SerialNumber": "SN00000004",
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
@@ -0,0 +1,35 @@
{
"@odata.context": "/redfish/v1/$metadata#Memory.Memory",
"@odata.id": "/redfish/v1/Systems/1/Memory/4",
"@odata.type": "#Memory.v1_1_0.Memory",
"AllowedSpeedsMHz": [
2133
],
"BusWidthBits": 72,
"CapacityMiB": 16384,
"DataWidthBits": 64,
"Description": "Memory",
"DeviceLocator": "P1-DIMMD1",
"Id": "4",
"Manufacturer": "Micron",
"MemoryDeviceType": "DDR4",
"MemoryLocation": {
"Channel": 3,
"MemoryController": 0,
"Slot": 0,
"Socket": 0
},
"MemoryMedia": [
"DRAM"
],
"MemoryType": "DRAM",
"Name": "P1-DIMMD1",
"OperatingSpeedMhz": 1866,
"PartNumber": "36ASF2G72PZ-2G1A2",
"RankCount": 4,
"SerialNumber": "SN00000005",
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
@@ -0,0 +1,35 @@
{
"@odata.context": "/redfish/v1/$metadata#Memory.Memory",
"@odata.id": "/redfish/v1/Systems/1/Memory/5",
"@odata.type": "#Memory.v1_1_0.Memory",
"AllowedSpeedsMHz": [
2133
],
"BusWidthBits": 72,
"CapacityMiB": 16384,
"DataWidthBits": 64,
"Description": "Memory",
"DeviceLocator": "P2-DIMME1",
"Id": "5",
"Manufacturer": "Micron",
"MemoryDeviceType": "DDR4",
"MemoryLocation": {
"Channel": 0,
"MemoryController": 1,
"Slot": 0,
"Socket": 1
},
"MemoryMedia": [
"DRAM"
],
"MemoryType": "DRAM",
"Name": "P2-DIMME1",
"OperatingSpeedMhz": 1866,
"PartNumber": "36ASF2G72PZ-2G1A2",
"RankCount": 5,
"SerialNumber": "SN00000006",
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
@@ -0,0 +1,35 @@
{
"@odata.context": "/redfish/v1/$metadata#Memory.Memory",
"@odata.id": "/redfish/v1/Systems/1/Memory/6",
"@odata.type": "#Memory.v1_1_0.Memory",
"AllowedSpeedsMHz": [
2133
],
"BusWidthBits": 72,
"CapacityMiB": 16384,
"DataWidthBits": 64,
"Description": "Memory",
"DeviceLocator": "P2-DIMMF1",
"Id": "6",
"Manufacturer": "Micron",
"MemoryDeviceType": "DDR4",
"MemoryLocation": {
"Channel": 1,
"MemoryController": 1,
"Slot": 0,
"Socket": 1
},
"MemoryMedia": [
"DRAM"
],
"MemoryType": "DRAM",
"Name": "P2-DIMMF1",
"OperatingSpeedMhz": 1866,
"PartNumber": "36ASF2G72PZ-2G1A2",
"RankCount": 6,
"SerialNumber": "SN00000007",
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
@@ -0,0 +1,35 @@
{
"@odata.context": "/redfish/v1/$metadata#Memory.Memory",
"@odata.id": "/redfish/v1/Systems/1/Memory/7",
"@odata.type": "#Memory.v1_1_0.Memory",
"AllowedSpeedsMHz": [
2133
],
"BusWidthBits": 72,
"CapacityMiB": 16384,
"DataWidthBits": 64,
"Description": "Memory",
"DeviceLocator": "P2-DIMMG1",
"Id": "7",
"Manufacturer": "Samsung",
"MemoryDeviceType": "DDR4",
"MemoryLocation": {
"Channel": 2,
"MemoryController": 1,
"Slot": 0,
"Socket": 1
},
"MemoryMedia": [
"DRAM"
],
"MemoryType": "DRAM",
"Name": "P2-DIMMG1",
"OperatingSpeedMhz": 1866,
"PartNumber": "M393A2G40DB0-CPB",
"RankCount": 7,
"SerialNumber": "SN00000008",
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
@@ -0,0 +1,35 @@
{
"@odata.context": "/redfish/v1/$metadata#Memory.Memory",
"@odata.id": "/redfish/v1/Systems/1/Memory/8",
"@odata.type": "#Memory.v1_1_0.Memory",
"AllowedSpeedsMHz": [
2133
],
"BusWidthBits": 72,
"CapacityMiB": 16384,
"DataWidthBits": 64,
"Description": "Memory",
"DeviceLocator": "P2-DIMMH1",
"Id": "8",
"Manufacturer": "Samsung",
"MemoryDeviceType": "DDR4",
"MemoryLocation": {
"Channel": 3,
"MemoryController": 1,
"Slot": 0,
"Socket": 1
},
"MemoryMedia": [
"DRAM"
],
"MemoryType": "DRAM",
"Name": "P2-DIMMH1",
"OperatingSpeedMhz": 1866,
"PartNumber": "M393A2G40DB0-CPB",
"RankCount": 8,
"SerialNumber": "SN00000009",
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
@@ -0,0 +1,34 @@
{
"@odata.context": "/redfish/v1/$metadata#MemoryCollection.MemoryCollection",
"@odata.id": "/redfish/v1/Systems/1/Memory",
"@odata.type": "#MemoryCollection.MemoryCollection",
"Description": "Memory Collection",
"Members": [
{
"@odata.id": "/redfish/v1/Systems/1/Memory/1"
},
{
"@odata.id": "/redfish/v1/Systems/1/Memory/2"
},
{
"@odata.id": "/redfish/v1/Systems/1/Memory/3"
},
{
"@odata.id": "/redfish/v1/Systems/1/Memory/4"
},
{
"@odata.id": "/redfish/v1/Systems/1/Memory/5"
},
{
"@odata.id": "/redfish/v1/Systems/1/Memory/6"
},
{
"@odata.id": "/redfish/v1/Systems/1/Memory/7"
},
{
"@odata.id": "/redfish/v1/Systems/1/Memory/8"
}
],
"Members@odata.count": 8,
"Name": "Memory Collection"
}
@@ -0,0 +1,28 @@
{
"@odata.context": "/redfish/v1/$metadata#Processor.Processor",
"@odata.id": "/redfish/v1/Systems/1/Processors/1",
"@odata.type": "#Processor.v1_0_0.Processor",
"Description": "Processor",
"Id": "1",
"InstructionSet": "x86-64",
"Manufacturer": "Intel",
"MaxSpeedMHz": 4000,
"Model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"Name": "Processor1",
"ProcessorArchitecture": "x86",
"ProcessorId": {
"EffectiveFamily": "0x6",
"EffectiveModel": "0x3F",
"IdentificationRegisters": "0xBFEBFBFF000306F2",
"Step": "0x2",
"VendorId": "GenuineIntel"
},
"ProcessorType": "CPU",
"Socket": "CPU1",
"Status": {
"Health": "OK",
"State": "Enabled"
},
"TotalCores": 6,
"TotalThreads": 12
}
@@ -0,0 +1,28 @@
{
"@odata.context": "/redfish/v1/$metadata#Processor.Processor",
"@odata.id": "/redfish/v1/Systems/1/Processors/2",
"@odata.type": "#Processor.v1_0_0.Processor",
"Description": "Processor",
"Id": "2",
"InstructionSet": "x86-64",
"Manufacturer": "Intel",
"MaxSpeedMHz": 4000,
"Model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"Name": "Processor2",
"ProcessorArchitecture": "x86",
"ProcessorId": {
"EffectiveFamily": "0x6",
"EffectiveModel": "0x3F",
"IdentificationRegisters": "0xBFEBFBFF000306F2",
"Step": "0x2",
"VendorId": "GenuineIntel"
},
"ProcessorType": "CPU",
"Socket": "CPU2",
"Status": {
"Health": "OK",
"State": "Enabled"
},
"TotalCores": 6,
"TotalThreads": 12
}
@@ -0,0 +1,16 @@
{
"@odata.context": "/redfish/v1/$metadata#ProcessorCollection.ProcessorCollection",
"@odata.id": "/redfish/v1/Systems/1/Processors",
"@odata.type": "#ProcessorCollection.ProcessorCollection",
"Description": "Processors Collection",
"Members": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/1"
},
{
"@odata.id": "/redfish/v1/Systems/1/Processors/2"
}
],
"Members@odata.count": 2,
"Name": "Processors Collection"
}
@@ -0,0 +1,9 @@
{
"@odata.context": "/redfish/v1/$metadata#SimpleStorageCollection.SimpleStorageCollection",
"@odata.id": "/redfish/v1/Systems/1/SimpleStorage",
"@odata.type": "#SimpleStorageCollection.SimpleStorageCollection",
"Description": "Simple Storage Collection",
"Members": [],
"Members@odata.count": 0,
"Name": "Simple Storage Collection"
}
@@ -0,0 +1,62 @@
{
"@odata.context": "/redfish/v1/$metadata#SmcNodeManager.SmcNodeManager",
"@odata.id": "/redfish/v1/Systems/1/SmcNodeManager",
"@odata.type": "#SmcNodeManager.v1_0_0.SmcNodeManager",
"Actions": {
"#SmcNodeManager.ClearAllPolicies": {
"target": "/redfish/v1/Systems/1/SmcNodeManager/Actions/SmcNodeManager.ClearAllPolicies"
}
},
"Capabilities": [
{
"DomainID": "Entire platform",
"DomainLimitingScope": 16,
"MaxConcurrentSettings": 16,
"MaxCorrectionTime": 600000,
"MaxReportingPeriod": 3600,
"MaxValueAfterReset": 32767,
"MinCorrectionTime": 6000,
"MinReportingPeriod": 1,
"MinValueAfterReset": 1,
"PolicyType": "Power Control Policy"
}
],
"Id": "Node Manager",
"Name": "Node Manager",
"Policy": [
{
"CorrectionTimeLimit": 0,
"DomainID": "Entire platform",
"PolicyExceptionActions": 0,
"PolicyID": 1,
"PolicyTriggerLimit": 0,
"PolicyType": 0,
"PowerLimit": 0,
"StatReportingPeriod": 0
}
],
"Selftest": {
"ImageFlags": "Operational",
"MajorCode": 85,
"MinorCode": 0
},
"Statistics": [
{
"AverageValue": 101,
"CurrentValue": 90,
"DomainID": "Entire platform",
"MaximumValue": 221,
"MinimumValue": 8,
"Mode": "Global power statistics",
"ReportingPeriod": 1800145,
"Timestamp": "2026-10-17T07:24:33+01:00"
}
],
"Version": {
"IPMIVersion": "Intel NM IPMI version 3.0",
"IntelNMVersion": "Supported Intel NM 3.0",
"MajorRevision": 3,
"MinorRevision": 19,
"PatchVersion": 0
}
}
@@ -0,0 +1,20 @@
{
"error": {
"@Message.ExtendedInfo": [
{
"Message": "Not licensed to perform this request. The following licenses DCMS were needed",
"MessageArgs": [
"DCMS "
],
"MessageId": "Base.v1_4_0.OemLicenseNotPassed",
"RelatedProperties": [
""
],
"Resolution": "Please activate at least one license in above message.",
"Severity": "Warning"
}
],
"Message": "A general error has occurred. See ExtendedInfo for more information.",
"code": "Base.v1_4_0.GeneralError"
}
}
@@ -0,0 +1,112 @@
{
"@odata.context": "/redfish/v1/$metadata#ComputerSystem.ComputerSystem",
"@odata.id": "/redfish/v1/Systems/1",
"@odata.type": "#ComputerSystem.v1_3_0.ComputerSystem",
"Actions": {
"#ComputerSystem.Reset": {
"ResetType@Redfish.AllowableValues": [
"On",
"ForceOff",
"GracefulShutdown",
"GracefulRestart",
"ForceRestart",
"Nmi",
"ForceOn"
],
"target": "/redfish/v1/Systems/1/Actions/ComputerSystem.Reset"
}
},
"BiosVersion": "3.1c",
"Boot": {
"BootSourceOverrideEnabled": "Disabled",
"BootSourceOverrideTarget": "None",
"BootSourceOverrideTarget@Redfish.AllowableValues": [
"None",
"Pxe",
"Hdd",
"Diags",
"CD/DVD",
"BiosSetup",
"FloppyRemovableMedia",
"UsbKey",
"UsbHdd",
"UsbFloppy",
"UsbCd",
"UefiUsbKey",
"UefiCd",
"UefiHdd",
"UefiUsbHdd",
"UefiUsbCd"
]
},
"Description": "Description of server",
"EthernetInterfaces": {
"@odata.id": "/redfish/v1/Systems/1/EthernetInterfaces"
},
"Id": "1",
"IndicatorLED": "Off",
"Links": {
"Chassis": [
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"ManagedBy": [
{
"@odata.id": "/redfish/v1/Managers/1"
}
],
"Oem": {}
},
"LogServices": {
"@odata.id": "/redfish/v1/Systems/1/LogServices"
},
"Manufacturer": "Supermicro",
"Memory": {
"@odata.id": "/redfish/v1/Systems/1/Memory"
},
"MemorySummary": {
"Status": {
"Health": "OK",
"State": "Enabled"
},
"TotalSystemMemoryGiB": 128
},
"Model": "Super Server",
"Name": "System",
"Oem": {
"Supermicro": {
"@odata.type": "#SmcSystemExtensions.v1_0_0.System",
"SmcNodeManager": {
"@odata.id": "/redfish/v1/Systems/1/SmcNodeManager"
}
}
},
"PartNumber": "X10DRL-i",
"PowerState": "On",
"ProcessorSummary": {
"Count": 2,
"Model": "Intel(R) Xeon(R) processor",
"Status": {
"Health": "OK",
"State": "Enabled"
}
},
"Processors": {
"@odata.id": "/redfish/v1/Systems/1/Processors"
},
"SKU": "Default string",
"SerialNumber": "ZM000S000001",
"SimpleStorage": {
"@odata.id": "/redfish/v1/Systems/1/SimpleStorage"
},
"Status": {
"Health": "Critical",
"State": "Enabled"
},
"Storage": {
"@odata.id": "/redfish/v1/Systems/1/Storage"
},
"SystemType": "Physical",
"UUID": "00000000-0000-0000-0000-00005E00534C"
}
@@ -0,0 +1,13 @@
{
"@odata.context": "/redfish/v1/$metadata#ComputerSystemCollection.ComputerSystemCollection",
"@odata.id": "/redfish/v1/Systems",
"@odata.type": "#ComputerSystemCollection.ComputerSystemCollection",
"Description": "Computer System Collection",
"Members": [
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"Members@odata.count": 1,
"Name": "Computer System Collection"
}
@@ -0,0 +1,8 @@
{
"@odata.context": "/redfish/v1/$metadata#TaskCollection.TaskCollection",
"@odata.id": "/redfish/v1/TaskService/Tasks",
"@odata.type": "#TaskCollection.TaskCollection",
"Members": [],
"Members@odata.count": 0,
"Name": "Task Collection"
}
@@ -0,0 +1,18 @@
{
"@odata.context": "/redfish/v1/$metadata#TaskService.TaskService",
"@odata.id": "/redfish/v1/TaskService",
"@odata.type": "#TaskService.v1_0_0.TaskService",
"CompletedTaskOverWritePolicy": "Manual",
"DateTime": "2026-10-17T09:24:32+01:00",
"Id": "TaskService",
"Name": "Tasks Service",
"Oem": {},
"ServiceEnabled": false,
"Status": {
"Health": "OK",
"State": "Disabled"
},
"Tasks": {
"@odata.id": "/redfish/v1/TaskService/Tasks"
}
}
@@ -0,0 +1,20 @@
{
"error": {
"@Message.ExtendedInfo": [
{
"Message": "Not licensed to perform this request. The following licenses DCMS were needed",
"MessageArgs": [
"DCMS "
],
"MessageId": "Base.v1_4_0.OemLicenseNotPassed",
"RelatedProperties": [
""
],
"Resolution": "Please activate at least one license in above message.",
"Severity": "Warning"
}
],
"Message": "A general error has occurred. See ExtendedInfo for more information.",
"code": "Base.v1_4_0.GeneralError"
}
}
@@ -0,0 +1,45 @@
{
"@odata.context": "/redfish/v1/$metadata#ServiceRoot.ServiceRoot",
"@odata.id": "/redfish/v1/",
"@odata.type": "#ServiceRoot.v1_1_0.ServiceRoot",
"AccountService": {
"@odata.id": "/redfish/v1/AccountService"
},
"Chassis": {
"@odata.id": "/redfish/v1/Chassis"
},
"EventService": {
"@odata.id": "/redfish/v1/EventService"
},
"Id": "RootService",
"JsonSchemas": {
"@odata.id": "/redfish/v1/JsonSchemas"
},
"Links": {
"Sessions": {
"@odata.id": "/redfish/v1/SessionService/Sessions"
}
},
"Managers": {
"@odata.id": "/redfish/v1/Managers"
},
"Name": "Root Service",
"Oem": {},
"RedfishVersion": "1.0.1",
"Registries": {
"@odata.id": "/redfish/v1/Registries"
},
"SessionService": {
"@odata.id": "/redfish/v1/SessionService"
},
"Systems": {
"@odata.id": "/redfish/v1/Systems"
},
"Tasks": {
"@odata.id": "/redfish/v1/TaskService"
},
"UUID": "00000000-0000-0000-0000-00005E005313",
"UpdateService": {
"@odata.id": "/redfish/v1/UpdateService"
}
}
+91
View File
@@ -0,0 +1,91 @@
"""RedfishDriver against a recording of a real Supermicro X10DRL-i (BMC 3.91, Redfish 1.0.1).
Recorded 2026-10-17 with an SFT-OOB-LIC license only: the service root and most resources
answer, but ``Systems/1/Storage`` and ``UpdateService`` want the DCMS license as well (403,
``OemLicenseNotPassed``). Serial numbers, UUIDs, MACs, addresses, the host name and the SNMP
communities are scrubbed. ``STATUS.json`` lists the paths that did not answer 200; their
files hold the error body the BMC sent.
"""
import json
import pytest
from napalm_device_types import models
from napalm_redfish import RedfishDriver
from tests.conftest import BASE_URL, FIXTURES, MockupServer
MOCKUP = "supermicro-x10drl-i-3.91/redfish"
REFUSED = json.loads((FIXTURES / MOCKUP / "STATUS.json").read_text())
@pytest.fixture
def x10(http):
server = MockupServer(http, MOCKUP)
for path, status in REFUSED.items():
body = json.loads((FIXTURES / MOCKUP / path[len("/redfish/v1/"):] / "index.json")
.read_text())
server.override("GET", path, status, body)
return server
@pytest.fixture
def driver(x10):
d = RedfishDriver(BASE_URL.removeprefix("https://"), "netork", "secret",
optional_args={"verify_ssl": False})
d.open()
yield d
d.close()
def test_the_facts_name_the_board_not_super_server(driver):
facts = driver.get_facts()
assert facts["vendor"] == "Supermicro"
# Systems/1 says "Super Server"; the board is its PartNumber and the chassis model.
assert facts["model"] == "X10DRL-i"
assert facts["os_version"] == "3.91"
assert facts["serial_number"] == "ZM000S000001"
def test_the_inventory_survives_the_storage_it_may_not_read(driver):
inv = driver.get_hardware_inventory()
assert set(inv) == set(models.HardwareInventoryDict.__annotations__)
assert inv["model"] == "X10DRL-i"
assert inv["system_uuid"] == "00000000-0000-0000-0000-00005e00534c"
assert len(inv["cpus"]) == 2
assert len(inv["memory"]) == 8
assert inv["drives"] == []
def test_the_firmware_comes_from_the_manager_and_the_system_without_updateservice(driver):
assert driver.get_firmware_inventory() == [
{"name": "BMC", "version": "3.91", "updateable": None},
{"name": "BIOS", "version": "3.1c", "updateable": None},
]
def test_the_missing_license_is_named_with_what_it_withholds(driver):
assert driver.get_device_warnings() == [{
"code": "bmc_license_partial",
"meta": {"licenses": "DCMS", "parts": ["drives", "firmware inventory"]},
}]
def test_the_power_actions_are_the_ones_the_bmc_advertises(driver):
assert driver.get_power_state() == {
"state": "On",
"actions": ["GracefulShutdown", "ForceOff", "GracefulRestart", "ForceRestart"],
}
def test_the_protocols_report_ipmi_over_lan_on(driver):
protocols = driver.get_management_protocols()
assert protocols["ipmi"] == {"enabled": True, "port": 623}
assert protocols["https"] == {"enabled": True, "port": 443}
def test_the_sensors_and_the_event_log_read(driver):
env = driver.get_environment()
assert len(env["temperature"]) == 19
assert len(env["fans"]) == 4
assert isinstance(driver.get_event_log(limit=5), list)