Skip to content

[sonic-redfish] Sonic Redfish support with OpenBMC and sonic-dbus-bridge #1

Draft
chinmoy-nexthop wants to merge 1 commit intosonic-net:masterfrom
nexthop-ai:review/bmcweb-with-dbus-bridge
Draft

[sonic-redfish] Sonic Redfish support with OpenBMC and sonic-dbus-bridge #1
chinmoy-nexthop wants to merge 1 commit intosonic-net:masterfrom
nexthop-ai:review/bmcweb-with-dbus-bridge

Conversation

@chinmoy-nexthop
Copy link

@chinmoy-nexthop chinmoy-nexthop commented Mar 3, 2026

OpenBMC Standard Compliance:

bmcweb (industry-standard Redfish server) is hardcoded to expect xyz.openbmc_project.* D-Bus interfaces. sonic-dbus-bridge implements these exact interfaces, while existing SONiC services use incompatible org.SONiC.* interfaces.

Mimicking OpenBMC:

sonic-dbus-bridge mimics OpenBMC D-Bus interfaces (xyz.openbmc_project.*) to expose SONiC platform data as standard Redfish APIs, creating the illusion that all phosphor-* services exist in SONiC without actually porting them.

Data Model Mismatch:

Existing SONiC host-service is action-oriented (RPC methods for internal container-to-host control), but Redfish requires a property-based, inventory data model. sonic-dbus-bridge provides the data-oriented interface that external management tools expect.

Keep bmcweb Pristine:

Establishes D-Bus as the singular standardized integration layer, ensuring bmcweb remains nearly unmodified and upstream-compatible no forking of the Redfish project.

Hardware Data Aggregation:

Translates SONiC's distributed hardware data (Redis CONFIG_DB/STATE_DB, FRU EEPROMs, platform.json) into unified OpenBMC compatible D-Bus objects that bmcweb can discover and consume.

Bidirectional Communication:

Enables both read (inventory queries) and write (host power control, reboot) operations via Redfish GET/PATCH/POST, bridging external management tools to SONiC's internal state.

Graceful Degradation:

Designed to tolerate missing data sources (Redis down, FRU unreadable) with safe fallbacks, ensuring Redfish endpoints remain available even in degraded mode critical for production BMC reliability.

sonic-dbus-bridge component:

  • Implements D-Bus to Redis state synchronization for SONiC integration
  • Provides D-Bus interfaces for Redfish API consumption by bmcweb
  • Supports inventory management via FRU and platform JSON adapters
  • Implements user management with PAM integration
  • Implements software update management for BMC firmware
  • Uses Redis pub/sub for state change notifications
  • Built with C++23, Meson build system, and sdbusplus library

Build system features:

  • Docker-only compilation for build consistency across environments
  • Meson-based builds for both bmcweb and sonic-dbus-bridge
  • C++23 support with proper dependency resolution via wrap files
  • Parallel build support via SONIC_CONFIG_MAKE_JOBS variable
  • Clean separation of build artifacts and source code
  • Makefile.build as central build orchestration with Docker-only builds
  • Docker build environment (debian:trixie) with all required dependencies
  • patch management system with series file for bmcweb integration
  • submodule setup scripts for bmcweb and sdbusplus dependencies
  • Docker container configuration for runtime deployment
  • README.md with build instructions and system architecture

…omponent

- Add Makefile.build as central build orchestration with Docker-only builds
- Add Docker build environment (debian:trixie) with all required dependencies
- Add patch management system with series file for bmcweb integration
- Add submodule setup scripts for bmcweb and sdbusplus dependencies
- Add Docker container configuration for runtime deployment
- Update README.md with build instructions and system architecture

sonic-dbus-bridge component:
- Implements D-Bus to Redis state synchronization for SONiC integration
- Provides D-Bus interfaces for Redfish API consumption by bmcweb
- Supports inventory management via FRU and platform JSON adapters
- Implements user management with PAM integration
- Implements software update management for BMC firmware
- Uses Redis pub/sub for state change notifications
- Built with C++23, Meson build system, and sdbusplus library

Build system features:
- Docker-only compilation for build consistency across environments
- Meson-based builds for both bmcweb and sonic-dbus-bridge
- C++23 support with proper dependency resolution via wrap files
- Parallel build support via SONIC_CONFIG_MAKE_JOBS variable
- Clean separation of build artifacts and source code

Signed-off-by: Chinmoy Dey <chinmoy@nexthop.ai>
Co-authored-by: Shreyansh Jain <shreyansh@nexthop.ai>
@mssonicbld
Copy link

/azp run

@chinmoy-nexthop chinmoy-nexthop marked this pull request as draft March 3, 2026 05:44
@azure-pipelines
Copy link

Commenter does not have sufficient privileges for PR 1 in repo sonic-net/sonic-redfish

Copy link

@nate-nexthop nate-nexthop left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

# Check if bmcweb has local changes (patches applied)
if [ -d "bmcweb/.git" ]; then
cd bmcweb
if ! git diff --quiet || ! git diff --cached --quiet; then

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why git diff --cached --quiet ? We don't stage the patches we apply right?


setup:
@$(SCRIPTS_DIR)/setup-submodules.sh
@$(SCRIPTS_DIR)/apply-patches.sh

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is apply-patches.sh? Did you forget to git add?

@chinmoy-nexthop chinmoy-nexthop changed the title [sonic-redfish] Add Docker-based build system and sonic-dbus-bridge c… [sonic-redfish] Sonic Redfish support with OpenBMC and sonic-dbus-bridge Mar 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants