Google Redfish Server

gBMCWeb is Google's Redfish server with several added features on top of OpenBMC BMCWeb.

To enable gBMCWeb for your machine. Include the meta-gbmc-staging layer, and add the following config to your build (e.g., MACHINE.conf).

# Use gBMCWeb
DISTRO_FEATURES:append = " gbmcfork"

The following is an alphabetical list of added features.

Multi-threading

Google enabled multi-threading, which turns the single-threaded process into a fully multithreaded daemon, greatly improved performance for GET requests, especially on multi-core (4+) BMCs.

See go/multithread-gbmcweb for details.

Enable it by adding bmcweb_multithread to your DISTRO_FEATURES.

gRPC as Transport

WIP

NVMe Redfish Storage

We pre-ported some features from https://github.com/CodeConstruct/bmcweb for OOB NVMe storage management:

  1. StorageController.SecurityReceive and StorageController.SecuritySend
  2. Volume detach/attach/delete/create
  3. Drive.SecureErase (Sanitize)

Our contractor CodeConstruct will upsteam these features to OpenBMC.

Plugins

Google has built a plugin system for BMCWeb to support machine specific features or behaviors. Please see Plugins.md for detailed user guide.

Stateful BMCWeb

http://go/stateful-bmcweb

Docker native builds and unit tests:

# switch to the folder:
cd /opt/bmc/gbmc/build/${MACHINE}/workspace/sources/bmcweb

# create a volume for the build folder:
docker volume create build_volume

# pull the container from:
docker pull gcr.io/gbmc-builders/openbmc-ubuntu-unit-test:latest

# run the openbmc docker:
docker run -v `pwd`:/workspace -v build_volume:/workspace/_build -it gcr.io/gbmc-builders/openbmc-ubuntu-unit-test:latest bash

# build (within the running container ^):
cd /workspace && meson setup _build && ninja install -C _build && ninja test -C _build

For more information you can follow go/build-gbmcweb-workstation to find the steps on how to build and run unit tests for gBMCWeb locally.