Skip to main content

redfish-python-sdk

redfish-python-sdk is a typed, high-level Python SDK for managing multi-vendor BMCs and bare-metal servers through the DMTF Redfish API.

PyPI version Python versions License PyPI Downloads

English | 中文

A lightweight Python SDK for managing server BMCs (Baseboard Management Controllers) via the DMTF Redfish protocol. Covers system inventory, hardware inspection, power control, boot management, event subscriptions, and more.

Features

  • Comprehensive hardware queries — CPU, memory, drives, GPU, NIC, PCIe, PSU, fans — one line of code each
  • Power & boot management — power on/off, restart, PXE/HDD/BIOS boot source switching
  • Multi-vendor compatible — auto-adapts to OEM extensions from Huawei, xFusion, Lenovo, HPE, Dell, and others
  • Pydantic v2 models — all return values are strongly-typed objects with full IDE autocompletion
  • Context manager — with statement support for automatic connection cleanup
  • Minimal dependencies — only requests, pydantic, and urllib3

Use DMTF standard fields first. In particular, xFusion's PCIe DeviceBDF field is OEM-only; portable code should use PCIeFunctions and only consume the OEM field when the xFusion contract applies.

Requirements

  • Python >= 3.9
  • A network-reachable Redfish-compliant BMC endpoint

Installation

# Install from PyPI
pip install redfish-python-sdk

# Or install from GitHub
pip install git+https://github.com/rednote-infra/redfish-python-sdk.git

# Install a specific version
pip install redfish-python-sdk==1.2.3
pip install git+https://github.com/rednote-infra/redfish-python-sdk.git@v1.2.3

# In requirements.txt
# redfish-python-sdk>=1.2.3

Quick Start

Credential management: All BMC credentials should be injected via environment variables. Never hardcode them in your source code. Before running examples or tests, set export BMC_IP=..., export BMC_USER=..., export BMC_PASSWORD=....

import os
from redfish_sdk import RedfishClient

# Connect to BMC (credentials from environment variables)
client = RedfishClient(
    host=os.environ["BMC_IP"],
    username=os.environ["BMC_USER"],
    password=os.environ["BMC_PASSWORD"],
)

# Get system info
system = client.systems.get()
print(f"Server: {system.manufacturer} {system.model}")
print(f"SN:     {system.serial_number}")
print(f"Power:  {system.power_state}")

# Get CPU info
for cpu in client.get_processors():
    print(f"CPU: {cpu.model}, {cpu.total_cores} cores / {cpu.total_threads} threads")

# Get memory info
for mem in client.get_memory():
    print(f"DIMM: {mem.manufacturer} {(mem.capacity_mib or 0) // 1024} GB")

# Get drive info
for drive in client.get_drives():
    print(f"Drive: {drive.model} {(drive.capacity_bytes or 0) / 1e12:.1f} TB")

# Don't forget to close
client.close()

Testing

# Run unit tests (no BMC or env vars required)
pytest tests/test_models_mock.py tests/test_client_mock.py -v

# Run offline tests (using pre-collected JSON data)
export REDFISH_JSON_DIR="./testdata"
pytest tests/test_offline_json.py -v

# Run integration tests (requires a real BMC)
export BMC_IP="<your-bmc-ip>"
export BMC_USER="<your-bmc-user>"
export BMC_PASSWORD="<your-bmc-password>"
pytest tests/test_real_bmc.py -v

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the BSD 3-Clause License.

Metadata

Release files for redfish-python-sdk 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for redfish-python-sdk 1.3.0
File Size Uploaded
redfish_python_sdk-1.3.0.tar.gz 181.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for redfish-python-sdk 1.3.0
File Interpreter ABI Platform
redfish_python_sdk-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 336.7 kB

Release files / redfish_python_sdk-1.3.0.tar.gz

Download URL redfish_python_sdk-1.3.0.tar.gz
Size 181.0 kB
Tags Source
SHA-256 checksum
How to use checksums
0f06499d674b2d7a15057ec2c3f35e8eccc4c1dcb86ed93599118ae62a249a4c
BLAKE2b-256 checksum
How to use checksums
bd8c8f26ff1f3312e6ced94faa6fc89ce23726575a862bfa7aab16013932671e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / redfish_python_sdk-1.3.0-py3-none-any.whl

Download URL redfish_python_sdk-1.3.0-py3-none-any.whl
Size 155.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a2e71f0e2232dafe9578398cb9ae5db876f0b61b30cd38fa0158937375982d56
BLAKE2b-256 checksum
How to use checksums
52b2d0a87f968b116bee784e3d976557b5fd677a4cfa0a4858900f7d199fa286
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

1.3.0 This release

2 release files

1.2.3

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page