Paul Vancil – Distinguished Eng., ESI Architecture, Dell EMC
Dell EMC contributes open source Redfish service Dell EMC has always been a big believer in open source and open standards because open technologies make our customers successful. These open standards accelerate innovation, provide flexibility to customize solutions, and allow the freedom to choose the ideal technology for each customer’s needs. We have a long history of making contributions to the open source community. Our PowerEdge server team has made many code contributions to the Linux kernel, and to Linux driver code. We are a platinum member of the OpenStack open source cloud effort; leading and contributing on projects like Crowbar (an open source deployment tool), Rex Ray (storage orchestration engine) and Jetpack (OpenStack environment deployment). The Distributed Management Task Force (DMTF) created the Scalable Platform Management Forum (SPMF) to work on Redfish - the open, industry standard specification and schema for systems management, designed to provide a consistent API that addresses all the components in the data center. Dell EMC is one of the original members and has served as a co-chair since its formation. What is RedDrum?
Our latest contribution to the open source community is related to our work on Redfish. It is RedDrum, an open source, python-based implementation of a Redfish service, and includes a recipe for backend integration with OpenBMC. RedDrum allows client system management software to use standard Redfish APIs to access the capabilities provided by OpenBMC. RedDrum is derived from the currently shipping Dell EMC DSS 9000 Rack Manager Redfish service and shows our continued leadership and commitment to improve developer and interoperability tools to enable the Redfish eco-system. OpenBMC background OpenBMC is an open software framework for a Baseboard Management Controller (BMC). A BMC is a specialized controller embedded in servers, often in the form of a system-on-chip (SoC), with its own CPU, memory, and storage and IO. A BMC connects to sensors in a system to read and control environmental conditions (i.e., temperature) and provide other system management functions (i.e., power control, monitoring and logging of CPU and memory).
Our open source RedDrum contribution includes two important components:
Both the simulator implementation and the platform integration implementation are structured with a “front-end” protocol engine and a “back-end” for data gathering/processing. The front-end protocol engine for both is exactly the same, but the back-end capabilities are what distinguish them.
Simulator details The “high-fidelity” Redfish Service Simulator back-end simulates integration with a physical server. It is high fidelity because it fully implements the Redfish API and is 100% conformant. The simulator has the following features.
There are currently two current simulation targets; a monolithic utilizing a “Base Server Redfish Profile”, and a proof-of-concept, reduced-configuration Dell EMC DSS 9000 rack-level simulation. The simulator can be run on a low-end Linux notebook, or a virtual machine using a Linux image.
OpenBMC platform implementation details The OpenBMC platform implementation back-end is based on a Power9 server that uses an Aspeed 2500 OpenBMC board controller. It is important to note that RedDrum can be used with any platform that implements OpenBMC. This implementation was chosen strictly for demonstration purposes, but we have also implemented the RedDrum service on x86 based servers running a Nuvoton BMC running OpenBMC firmware.
The Benefit for Developers OpenBMC enables developers to leverage any firmware development already done in the OpenBMC framework – and just concentrate on new development. This results in accelerated development cycles. Developers using RedDrum will be able to:
Other Redfish Services Nothing precludes other Redfish services being contributed and used within the community - that is the beauty of open source! We have chosen to base our RedDrum service on Python because it offers an ease of implementation that appeals to many developers who may want to leverage this open source code in some way. Of course, depending on the BMC horsepower, flash size, and other factors, different redfish service implementations may be better suited to particular use cases. How do I get RedDrum?
RedDrum is available on GitHub at org: https://github.com/RedDrum-Redfish-Project The code for the RedDrum Simulator: https://github.com/RedDrum-Redfish-Project/RedDrum-Simulator The OpenBMC Backend, yocto recipes, and yocto-patch files needed to build a real OpenBMC image with RedDrum-OpenBMC: https://github.com/RedDrum-Redfish-Project/RedDrum-OpenBMC The common RedDrum Frontend package used by the simulator and OpenBMC https://github.com/RedDrum-Redfish-Project/RedDrum-Frontend Setup instructions and configuratione4s scripts for the httpd (e.g., Apache) used by the Simulator and OpenBMC: https://github.com/RedDrum-Redfish-Project/RedDrum-Httpd-Configs