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

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.2.3

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.2.3
File Size Uploaded
redfish_python_sdk-1.2.3.tar.gz 153.2 kB Details

Built distribution (wheel)

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

Total release size: 289.7 kB

Release files / redfish_python_sdk-1.2.3.tar.gz

Download URL redfish_python_sdk-1.2.3.tar.gz
Size 153.2 kB
Tags Source
SHA-256 checksum
How to use checksums
176c21211b3cf6f583f717b1635072eafd37852deb2ad477ae1d51f01d5ffdb2
BLAKE2b-256 checksum
How to use checksums
b9945ce2b9e754d185c79a7205037006ee59c2fc00f7ce4aca1a4a159c67b170
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.2.3-py3-none-any.whl

Download URL redfish_python_sdk-1.2.3-py3-none-any.whl
Size 136.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c56f5c685fc24e24fdbadfa1009fb886a512ee7b4b9bbe6dbde24bcd27e04744
BLAKE2b-256 checksum
How to use checksums
5852dfa86b5e0b9ec2698ecefc65337f2b65f74a8b10babed27262982b9a7266
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

1.3.0

2 release files

This release

1.2.3 This release

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