summaryrefslogtreecommitdiff
path: root/redfish-core
diff options
context:
space:
mode:
authorJason M. Bills <jason.m.bills@linux.intel.com>2019-03-28 00:14:53 +0300
committerEd Tanous <ed.tanous@intel.com>2019-05-08 22:08:00 +0300
commitfbe8378fd5d8ee926f260ae71c877cc6a64a7594 (patch)
tree01ff21228c1df5ab4de1febebd4c621adb5f4e2c /redfish-core
parent351d3063e86c5a6047c995ba72552bd82df86489 (diff)
downloadbmcweb-fbe8378fd5d8ee926f260ae71c877cc6a64a7594.tar.xz
Remove the static OpenBMC Message Registry file
This change removes the static OpenBMC Message Registry file and replaces it with a compile-time structure. Tested: Verified the OpenBMC Message registry is correctly returned from the existing endpoints without using the static files. Change-Id: I60ab3ce0d23c9ac7e91ebb85f445fb9ca731983d Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
Diffstat (limited to 'redfish-core')
-rw-r--r--redfish-core/include/redfish.hpp2
-rw-r--r--redfish-core/include/registries/openbmc_message_registry.hpp1213
-rw-r--r--redfish-core/lib/message_registries.hpp119
3 files changed, 1334 insertions, 0 deletions
diff --git a/redfish-core/include/redfish.hpp b/redfish-core/include/redfish.hpp
index a741a76042..6237e47673 100644
--- a/redfish-core/include/redfish.hpp
+++ b/redfish-core/include/redfish.hpp
@@ -112,6 +112,8 @@ class RedfishService
std::make_unique<MessageRegistryFileCollection>(app));
nodes.emplace_back(std::make_unique<BaseMessageRegistryFile>(app));
nodes.emplace_back(std::make_unique<BaseMessageRegistry>(app));
+ nodes.emplace_back(std::make_unique<OpenBMCMessageRegistryFile>(app));
+ nodes.emplace_back(std::make_unique<OpenBMCMessageRegistry>(app));
for (const auto& node : nodes)
{
diff --git a/redfish-core/include/registries/openbmc_message_registry.hpp b/redfish-core/include/registries/openbmc_message_registry.hpp
new file mode 100644
index 0000000000..662aa880f9
--- /dev/null
+++ b/redfish-core/include/registries/openbmc_message_registry.hpp
@@ -0,0 +1,1213 @@
+/*
+// Copyright (c) 2019 Intel Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+*/
+#pragma once
+#include <registries.hpp>
+
+namespace redfish::message_registries::openbmc
+{
+const Header header = {
+ .copyright = "Copyright 2018 Intel. All rights reserved.",
+ .type = "#MessageRegistry.v1_0_0.MessageRegistry",
+ .id = "OpenBMC.0.1.0",
+ .name = "OpenBMC Message Registry",
+ .language = "en",
+ .description = "This registry defines the base messages for OpenBMC.",
+ .registryPrefix = "OpenBMC",
+ .registryVersion = "0.1.0",
+ .owningEntity = "OpenBMC",
+};
+const std::array registry = {
+ MessageEntry{
+ "ADDDCCorrectable",
+ {
+ .description = "Indicates an ADDDC Correctable Error.",
+ .message =
+ "ADDDC Correctable Error.Socket=%1 Channel=%2 DIMM=%3 Rank=%4.",
+ .severity = "Warning",
+ .numberOfArgs = 4,
+ .paramTypes =
+ {
+ "number",
+ "string",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "BIOSBoot",
+ {
+ .description =
+ "Indicates BIOS has transitioned control to the OS Loader.",
+ .message = "BIOS System Boot.",
+ .severity = "OK",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "BIOSPOSTError",
+ {
+ .description = "Indicates BIOS POST has encountered an error.",
+ .message = "BIOS POST Error. Error Code=%1",
+ .severity = "Warning",
+ .numberOfArgs = 1,
+ .paramTypes = {"number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{"BIOSRecoveryComplete",
+ {
+ .description = "Indicates BIOS Recovery has completed.",
+ .message = "BIOS Recovery Complete.",
+ .severity = "OK",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{"BIOSRecoveryStart",
+ {
+ .description = "Indicates BIOS Recovery has started.",
+ .message = "BIOS Recovery Start.",
+ .severity = "Warning",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{"CPUError",
+ {
+ .description = "Indicates that a CPU Error occurred of "
+ "the specified type or cause.",
+ .message = "CPU Error Occurred: %1.",
+ .severity = "Critical",
+ .numberOfArgs = 1,
+ .paramTypes = {"string"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "DCPowerOff",
+ {
+ .description = "Indicates that the system DC power is off.",
+ .message = "Host system DC power is off",
+ .severity = "OK",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{"DCPowerOn",
+ {
+ .description = "Indicates that the system DC power is on.",
+ .message = "Host system DC power is on",
+ .severity = "OK",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "EventLogCleared",
+ {
+ .description = "Indicates that the event log has been cleared.",
+ .message = "Event Log Cleared.",
+ .severity = "OK",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "FanInserted",
+ {
+ .description = "Indicates that a system fan has been inserted.",
+ .message = "Fan %1 inserted.",
+ .severity = "OK",
+ .numberOfArgs = 1,
+ .paramTypes = {"number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{"FanRedundancyLost",
+ {
+ .description =
+ "Indicates that system fan redundancy has been lost.",
+ .message = "Fan redundancy lost.",
+ .severity = "Warning",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "FanRedundancyRegained",
+ {
+ .description =
+ "Indicates that system fan redundancy has been regained.",
+ .message = "Fan redundancy regained.",
+ .severity = "OK",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "FanRemoved",
+ {
+ .description = "Indicates that a system fan has been removed.",
+ .message = "Fan %1 removed.",
+ .severity = "Warning",
+ .numberOfArgs = 1,
+ .paramTypes = {"number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "FirmwareUpdateCompleted",
+ {
+ .description =
+ "Indicates a firmware update has completed successfully.",
+ .message = "%1 firmware update to version %2 completed "
+ "successfully.",
+ .severity = "OK",
+ .numberOfArgs = 2,
+ .paramTypes = {"string", "string"},
+ .resolution = "None.",
+ }},
+ MessageEntry{"FirmwareUpdateFailed",
+ {
+ .description = "Indicates a firmware update has failed.",
+ .message = "%1 firmware update to version %2 failed.",
+ .severity = "Warning",
+ .numberOfArgs = 2,
+ .paramTypes = {"string", "string"},
+ .resolution = "None.",
+ }},
+ MessageEntry{"FirmwareUpdateStarted",
+ {
+ .description = "Indicates a firmware update has started.",
+ .message = "%1 firmware update to version %2 started.",
+ .severity = "OK",
+ .numberOfArgs = 2,
+ .paramTypes = {"string", "string"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "GeneralFirmwareSecurityViolation",
+ {
+ .description =
+ "Indicates a general firmware security violation has occurred.",
+ .message = "Firmware security violation: %1.",
+ .severity = "Critical",
+ .numberOfArgs = 1,
+ .paramTypes = {"string"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "InvalidLoginAttempted",
+ {
+ .description =
+ "Indicates that a login was attempted on the specified "
+ "interface with an invalid username or password.",
+ .message = "Invalid username or password attempted on %1.",
+ .severity = "Warning",
+ .numberOfArgs = 1,
+ .paramTypes = {"string"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "IntelUPILinkWidthReducedToHalf",
+ {
+ .description =
+ "Indicates Intel UPI link width has reduced to half width.",
+ .message = "Intel UPI link width reduced to half. Node=%1.",
+ .severity = "Warning",
+ .numberOfArgs = 1,
+ .paramTypes =
+ {
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "IntelUPILinkWidthReducedToQuarter",
+ {
+ .description =
+ "Indicates Intel UPI link width has reduced to quarter width.",
+ .message = "Intel UPI link width reduced to quarter. Node=%1.",
+ .severity = "Warning",
+ .numberOfArgs = 1,
+ .paramTypes =
+ {
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "LegacyPCIPERR",
+ {
+ .description = "Indicates a Legacy PCI PERR.",
+ .message = "Legacy PCI PERR. Bus=%1 Device=%2 Function=%3.",
+ .severity = "Warning",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "LegacyPCISERR",
+ {
+ .description = "Indicates a Legacy PCI SERR.",
+ .message = "Legacy PCI SERR. Bus=%1 Device=%2 Function=%3.",
+ .severity = "Critical",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{"ManufacturingModeEntered",
+ {
+ .description = "Indicates that Factory, Manufacturing, or "
+ "Test mode has been entered.",
+ .message = "Entered Manufacturing Mode.",
+ .severity = "Warning",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{"MemoryECCCorrectable",
+ {
+ .description = "Indicates a Correctable Memory ECC error.",
+ .message = "Memory ECC correctable error. Socket=%1 "
+ "Channel=%2 DIMM=%3 Rank=%4.",
+ .severity = "Warning",
+ .numberOfArgs = 4,
+ .paramTypes =
+ {
+ "number",
+ "string",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "MemoryECCUncorrectable",
+ {
+ .description = "Indicates an Uncorrectable Memory ECC error.",
+ .message = "Memory ECC uncorrectable error. Socket=%1 Channel=%2 "
+ "DIMM=%3 Rank=%4.",
+ .severity = "Critical",
+ .numberOfArgs = 4,
+ .paramTypes =
+ {
+ "number",
+ "string",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "MemoryParityCommandAndAddress",
+ {
+ .description = "Indicates a Command and Address parity error.",
+ .message = "Command and Address parity error. Socket=%1 Channel=%2 "
+ "DIMM=%3 ChannelValid=%4 DIMMValid=%5.",
+ .severity = "Critical",
+ .numberOfArgs = 5,
+ .paramTypes =
+ {
+ "number",
+ "string",
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{"MemoryParityNotKnown",
+ {
+ .description = "Indicates an unknown parity error.",
+ .message = "Memory parity error. Socket=%1 Channel=%2 "
+ "DIMM=%3 ChannelValid=%4 DIMMValid=%5.",
+ .severity = "Critical",
+ .numberOfArgs = 5,
+ .paramTypes =
+ {
+ "number",
+ "string",
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "MemoryRASConfigurationDisabled",
+ {
+ .description =
+ "Indicates Memory RAS Disabled Configuration Status.",
+ .message = "Memory RAS Configuration Disabled. Error=%1 Mode=%2.",
+ .severity = "OK",
+ .numberOfArgs = 2,
+ .paramTypes =
+ {
+ "string",
+ "string",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "MemoryRASConfigurationEnabled",
+ {
+ .description = "Indicates Memory RAS Enabled Configuration Status.",
+ .message = "Memory RAS Configuration Enabled. Error=%1 Mode=%2.",
+ .severity = "OK",
+ .numberOfArgs = 2,
+ .paramTypes =
+ {
+ "string",
+ "string",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "MemoryRASModeDisabled",
+ {
+ .description = "Indicates Memory RAS Disabled Mode Selection.",
+ .message = "Memory RAS Mode Select Disabled. Prior Mode=%1 "
+ "Selected Mode=%2.",
+ .severity = "OK",
+ .numberOfArgs = 2,
+ .paramTypes =
+ {
+ "string",
+ "string",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "MemoryRASModeEnabled",
+ {
+ .description = "Indicates Memory RAS Enabled Mode Selection.",
+ .message = "Memory RAS Mode Select Enabled. Prior Mode=%1 Selected "
+ "Mode=%2.",
+ .severity = "OK",
+ .numberOfArgs = 2,
+ .paramTypes =
+ {
+ "string",
+ "string",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "MemoryThermTrip",
+ {
+ .description =
+ "Indicates that the system memory ThermTrip is asserted.",
+ .message = "Memory ThermTrip asserted.",
+ .severity = "Critical",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "MirroringRedundancyDegraded",
+ {
+ .description =
+ "Indicates the mirroring redundancy state is degraded.",
+ .message = "Mirroring redundancy state degraded. Socket=%1 "
+ "Channel=%2 DIMM=%3 Pair=%4 Rank=%5.",
+ .severity = "Warning",
+ .numberOfArgs = 5,
+ .paramTypes =
+ {
+ "number",
+ "string",
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "MirroringRedundancyFull",
+ {
+ .description =
+ "Indicates the mirroring redundancy state is fully redundant.",
+ .message = "Mirroring redundancy state fully redundant. Socket=%1 "
+ "Channel=%2 DIMM=%3 Pair=%4 Rank=%5.",
+ .severity = "OK",
+ .numberOfArgs = 5,
+ .paramTypes =
+ {
+ "number",
+ "string",
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "NMIButtonPressed",
+ {
+ .description = "Indicates that the NMI button was pressed.",
+ .message = "NMI Button Pressed.",
+ .severity = "Critical",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeCorrectableAdvisoryNonFatal",
+ {
+ .description =
+ "Indicates a PCIe Correctable Advisory Non-fatal Error.",
+ .message = "PCIe Correctable Advisory Non-fatal Error. Bus=%1 "
+ "Device=%2 Function=%3.",
+ .severity = "Warning",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeCorrectableBadDLLP",
+ {
+ .description = "Indicates a PCIe Correctable Bad DLLP Error.",
+ .message =
+ "PCIe Correctable Bad DLLP. Bus=%1 Device=%2 Function=%3.",
+ .severity = "Warning",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeCorrectableBadTLP",
+ {
+ .description = "Indicates a PCIe Correctable Bad TLP Error.",
+ .message =
+ "PCIe Correctable Bad TLP. Bus=%1 Device=%2 Function=%3.",
+ .severity = "Warning",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeCorrectableHeaderLogOverflow",
+ {
+ .description =
+ "Indicates a PCIe Correctable Header Log Overflow Error.",
+ .message = "PCIe Correctable Header Log Overflow. Bus=%1 Device=%2 "
+ "Function=%3.",
+ .severity = "Warning",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeCorrectableInternal",
+ {
+ .description = "Indicates a PCIe Correctable Internal Error.",
+ .message = "PCIe Correctable Internal Error. Bus=%1 Device=%2 "
+ "Function=%3.",
+ .severity = "Warning",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{"PCIeCorrectableLinkBWChanged",
+ {
+ .description =
+ "Indicates a PCIe Correctable Link BW Changed Error.",
+ .message = "PCIe Correctable Link BW Changed. Bus=%1 "
+ "Device=%2 Function=%3.",
+ .severity = "Warning",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeCorrectableReceiverError",
+ {
+ .description = "Indicates a PCIe Correctable Receiver Error.",
+ .message = "PCIe Correctable Receiver Error. Bus=%1 Device=%2 "
+ "Function=%3.",
+ .severity = "Warning",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeCorrectableReplayNumRollover",
+ {
+ .description = "Indicates a PCIe Correctable Replay Num Rollover.",
+ .message = "PCIe Correctable Replay Num Rollover. Bus=%1 Device=%2 "
+ "Function=%3.",
+ .severity = "Warning",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeCorrectableReplayTimerTimeout",
+ {
+ .description = "Indicates a PCIe Correctable Replay Timer Timeout.",
+ .message = "PCIe Correctable Replay Timer Timeout. Bus=%1 "
+ "Device=%2 Function=%3.",
+ .severity = "Warning",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{"PCIeCorrectableUnspecifiedAERError",
+ {
+ .description =
+ "Indicates a PCIe Correctable Unspecified AER Error.",
+ .message = "PCIe Correctable Unspecified AER Error. "
+ "Bus=%1 Device=%2 Function=%3.",
+ .severity = "Warning",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalACSViolation",
+ {
+ .description = "Indicates a PCIe ACS Violation Error.",
+ .message =
+ "PCIe Fatal ACS Violation. Bus=%1 Device=%2 Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalAtomicEgressBlocked",
+ {
+ .description = "Indicates a PCIe Atomic Egress Blocked Error.",
+ .message = "PCIe Fatal Atomic Egress Blocked. Bus=%1 Device=%2 "
+ "Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalCompleterAbort",
+ {
+ .description = "Indicates a PCIe Completer Abort Error.",
+ .message =
+ "PCIe Fatal Completer Abort. Bus=%1 Device=%2 Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalCompletionTimeout",
+ {
+ .description = "Indicates a PCIe Completion Timeout Error.",
+ .message =
+ "PCIe Fatal Completion Timeout. Bus=%1 Device=%2 Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalDataLinkLayerProtocol",
+ {
+ .description = "Indicates a PCIe Data Link Layer Protocol Error.",
+ .message =
+ "PCIe Fatal Data Link Layer Protocol Error. Bus=%1 Device=%2 "
+ "Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalECRCError",
+ {
+ .description = "Indicates a PCIe ECRC Error.",
+ .message = "PCIe Fatal ECRC Error. Bus=%1 Device=%2 Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalFlowControlProtocol",
+ {
+ .description = "Indicates a PCIe Flow Control Protocol Error.",
+ .message =
+ "PCIe Fatal Flow Control Protocol Error. Bus=%1 Device=%2 "
+ "Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalMalformedTLP",
+ {
+ .description = "Indicates a PCIe Malformed TLP Error.",
+ .message =
+ "PCIe Fatal Malformed TLP Error. Bus=%1 Device=%2 Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{"PCIeFatalMCBlockedTLP",
+ {
+ .description = "Indicates a PCIe MC Blocked TLP Error.",
+ .message = "PCIe Fatal MC Blocked TLP Error. Bus=%1 "
+ "Device=%2 Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalPoisonedTLP",
+ {
+ .description = "Indicates a PCIe Poisoned TLP Error.",
+ .message =
+ "PCIe Fatal Poisoned TLP Error. Bus=%1 Device=%2 Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalReceiverBufferOverflow",
+ {
+ .description = "Indicates a PCIe Receiver Buffer Overflow Error.",
+ .message = "PCIe Fatal Receiver Buffer Overflow. Bus=%1 Device=%2 "
+ "Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalReceivedERR_NONFATALMessage",
+ {
+ .description =
+ "Indicates a PCIe Received ERR_NONFATAL Message Error.",
+ .message =
+ "PCIe Fatal Received ERR_NONFATAL Message. Bus=%1 Device=%2 "
+ "Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{"PCIeFatalReceivedFatalMessageFromDownstream",
+ {
+ .description = "Indicates a PCIe Received Fatal Message "
+ "From Downstream Error.",
+ .message =
+ "PCIe Fatal Received Fatal Message From Downstream. "
+ "Bus=%1 Device=%2 Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalSurpriseLinkDown",
+ {
+ .description = "Indicates a PCIe Surprise Link Down Error.",
+ .message = "PCIe Fatal Surprise Link Down Error. Bus=%1 Device=%2 "
+ "Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalTLPPrefixBlocked",
+ {
+ .description = "Indicates a PCIe TLP Prefix Blocked Error.",
+ .message = "PCIe Fatal TLP Prefix Blocked Error. Bus=%1 Device=%2 "
+ "Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalUncorrectableInternal",
+ {
+ .description = "Indicates a PCIe Uncorrectable Internal Error.",
+ .message =
+ "PCIe Fatal Uncorrectable Internal Error. Bus=%1 Device=%2 "
+ "Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalUnexpectedCompletion",
+ {
+ .description = "Indicates a PCIe Unexpected Completion Error.",
+ .message = "PCIe Fatal Unexpected Completion. Bus=%1 Device=%2 "
+ "Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalUnspecifiedNonAERFatalError",
+ {
+ .description = "Indicates a PCIe Unspecified Non-AER Fatal Error.",
+ .message = "PCIe Fatal Unspecified Non-AER Fatal Error. Bus=%1 "
+ "Device=%2 Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PCIeFatalUnsupportedRequest",
+ {
+ .description = "Indicates a PCIe Unsupported Request Error.",
+ .message =
+ "PCIe Fatal Unsupported Request. Bus=%1 Device=%2 Function=%3.",
+ .severity = "Error",
+ .numberOfArgs = 3,
+ .paramTypes =
+ {
+ "number",
+ "number",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PowerButtonPressed",
+ {
+ .description = "Indicates that the power button was pressed.",
+ .message = "Power Button Pressed.",
+ .severity = "OK",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PowerSupplyACLost",
+ {
+ .description = "Indicates that a power supply has lost AC power.",
+ .message = "Power supply %1 AC power lost.",
+ .severity = "Critical",
+ .numberOfArgs = 1,
+ .paramTypes = {"number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PowerSupplyConfigurationError",
+ {
+ .description = "Indicates an error in power supply configuration.",
+ .message = "Power supply %1 configuration error.",
+ .severity = "Critical",
+ .numberOfArgs = 1,
+ .paramTypes = {"number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PowerSupplyFanFailed",
+ {
+ .description =
+ "Indicates that the specified power supply fan has failed.",
+ .message = "Power supply %1 fan %2 failed.",
+ .severity = "Critical",
+ .numberOfArgs = 2,
+ .paramTypes = {"number", "number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{"PowerSupplyFailed",
+ {
+ .description = "Indicates that a power supply has failed.",
+ .message = "Power supply %1 failed.",
+ .severity = "Critical",
+ .numberOfArgs = 1,
+ .paramTypes = {"number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{"PowerSupplyFailurePredicted",
+ {
+ .description =
+ "Indicates that a power supply is predicted to fail.",
+ .message = "Power supply %1 failure predicted.",
+ .severity = "Warning",
+ .numberOfArgs = 1,
+ .paramTypes = {"number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PowerSupplyInserted",
+ {
+ .description = "Indicates that a power supply has been inserted.",
+ .message = "Power supply %1 inserted.",
+ .severity = "OK",
+ .numberOfArgs = 1,
+ .paramTypes = {"number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "PowerSupplyRemoved",
+ {
+ .description = "Indicates that a power supply has been removed.",
+ .message = "Power supply %1 removed.",
+ .severity = "Warning",
+ .numberOfArgs = 1,
+ .paramTypes = {"number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "ResetButtonPressed",
+ {
+ .description = "Indicates that the reset button was pressed.",
+ .message = "Reset Button Pressed.",
+ .severity = "OK",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{"SELEntryAdded",
+ {
+ .description = "Indicates a SEL entry was added using the "
+ "Add SEL Entry or Platform Event command.",
+ .message = "SEL Entry Added: %1",
+ .severity = "OK",
+ .numberOfArgs = 1,
+ .paramTypes =
+ {
+ "string",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "SensorThresholdCriticalHighGoingHigh",
+ {
+ .description = "Indicates that a threshold sensor has crossed a "
+ "critical high threshold going high.",
+ .message = "%1 sensor crossed a critical high threshold going "
+ "high. Reading=%2 Threshold=%3.",
+ .severity = "Critical",
+ .numberOfArgs = 3,
+ .paramTypes = {"string", "number", "number"},
+ .resolution = "Check the sensor or subsystem for errors.",
+ }},
+ MessageEntry{
+ "SensorThresholdCriticalHighGoingLow",
+ {
+ .description = "Indicates that a threshold sensor has crossed a "
+ "critical high threshold going low.",
+ .message = "%1 sensor crossed a critical high threshold going low. "
+ "Reading=%2 Threshold=%3.",
+ .severity = "OK",
+ .numberOfArgs = 3,
+ .paramTypes = {"string", "number", "number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "SensorThresholdCriticalLowGoingHigh",
+ {
+ .description = "Indicates that a threshold sensor has crossed a "
+ "critical low threshold going high.",
+ .message = "%1 sensor crossed a critical low threshold going high. "
+ "Reading=%2 Threshold=%3.",
+ .severity = "OK",
+ .numberOfArgs = 3,
+ .paramTypes = {"string", "number", "number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "SensorThresholdCriticalLowGoingLow",
+ {
+ .description = "Indicates that a threshold sensor has crossed a "
+ "critical low threshold going low.",
+ .message = "%1 sensor crossed a critical low threshold going low. "
+ "Reading=%2 Threshold=%3.",
+ .severity = "Critical",
+ .numberOfArgs = 3,
+ .paramTypes = {"string", "number", "number"},
+ .resolution = "Check the sensor or subsystem for errors.",
+ }},
+ MessageEntry{
+ "SensorThresholdWarningHighGoingHigh",
+ {
+ .description = "Indicates that a threshold sensor has crossed a "
+ "warning high threshold going high.",
+ .message = "%1 sensor crossed a warning high threshold going high. "
+ "Reading=%2 Threshold=%3.",
+ .severity = "Warning",
+ .numberOfArgs = 3,
+ .paramTypes = {"string", "number", "number"},
+ .resolution = "Check the sensor or subsystem for errors.",
+ }},
+ MessageEntry{
+ "SensorThresholdWarningHighGoingLow",
+ {
+ .description = "Indicates that a threshold sensor has crossed a "
+ "warning high threshold going low.",
+ .message = "%1 sensor crossed a warning high threshold going low. "
+ "Reading=%2 Threshold=%3.",
+ .severity = "OK",
+ .numberOfArgs = 3,
+ .paramTypes = {"string", "number", "number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "SensorThresholdWarningLowGoingHigh",
+ {
+ .description = "Indicates that a threshold sensor has crossed a "
+ "warning low threshold going high.",
+ .message = "%1 sensor crossed a warning low threshold going high. "
+ "Reading=%2 Threshold=%3.",
+ .severity = "OK",
+ .numberOfArgs = 3,
+ .paramTypes = {"string", "number", "number"},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "SensorThresholdWarningLowGoingLow",
+ {
+ .description = "Indicates that a threshold sensor has crossed a "
+ "warning low threshold going low.",
+ .message = "%1 sensor crossed a warning low threshold going low. "
+ "Reading=%2 Threshold=%3.",
+ .severity = "Warning",
+ .numberOfArgs = 3,
+ .paramTypes = {"string", "number", "number"},
+ .resolution = "Check the sensor or subsystem for errors.",
+ }},
+ MessageEntry{"SparingRedundancyDegraded",
+ {
+ .description =
+ "Indicates the sparing redundancy state is degraded.",
+ .message = "Sparing redundancy state degraded. Socket=%1 "
+ "Channel=%2 DIMM=%3 Domain=%4 Rank=%5.",
+ .severity = "Warning",
+ .numberOfArgs = 5,
+ .paramTypes =
+ {
+ "number",
+ "string",
+ "number",
+ "string",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "SparingRedundancyFull",
+ {
+ .description =
+ "Indicates the sparing redundancy state is fully redundant.",
+ .message = "Sparing redundancy state fully redundant. Socket=%1 "
+ "Channel=%2 DIMM=%3 Domain=%4 Rank=%5.",
+ .severity = "OK",
+ .numberOfArgs = 5,
+ .paramTypes =
+ {
+ "number",
+ "string",
+ "number",
+ "string",
+ "number",
+ },
+ .resolution = "None.",
+ }},
+ MessageEntry{"SystemPowerLost",
+ {
+ .description = "Indicates that power was lost while the "
+ "system was powered on.",
+ .message = "System Power Lost.",
+ .severity = "Critical",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "SystemPowerOffFailed",
+ {
+ .description = "Indicates that the system failed to power off.",
+ .message = "System Power-Off Failed.",
+ .severity = "Critical",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+ MessageEntry{
+ "SystemPowerOnFailed",
+ {
+ .description = "Indicates that the system failed to power on.",
+ .message = "System Power-On Failed.",
+ .severity = "Critical",
+ .numberOfArgs = 0,
+ .paramTypes = {},
+ .resolution = "None.",
+ }},
+};
+} // namespace redfish::message_registries::openbmc
diff --git a/redfish-core/lib/message_registries.hpp b/redfish-core/lib/message_registries.hpp
index e44e97d2b8..31412f3eac 100644
--- a/redfish-core/lib/message_registries.hpp
+++ b/redfish-core/lib/message_registries.hpp
@@ -18,6 +18,7 @@
#include "node.hpp"
#include "registries.hpp"
#include "registries/base_message_registry.hpp"
+#include "registries/openbmc_message_registry.hpp"
namespace redfish
{
@@ -193,4 +194,122 @@ class BaseMessageRegistry : public Node
}
};
+class OpenBMCMessageRegistryFile : public Node
+{
+ public:
+ template <typename CrowApp>
+ OpenBMCMessageRegistryFile(CrowApp &app) :
+ Node(app, "/redfish/v1/Registries/OpenBMC/")
+ {
+ entityPrivileges = {
+ {boost::beast::http::verb::get, {{"Login"}}},
+ {boost::beast::http::verb::head, {{"Login"}}},
+ {boost::beast::http::verb::patch, {{"ConfigureManager"}}},
+ {boost::beast::http::verb::put, {{"ConfigureManager"}}},
+ {boost::beast::http::verb::delete_, {{"ConfigureManager"}}},
+ {boost::beast::http::verb::post, {{"ConfigureManager"}}}};
+ }
+
+ private:
+ void doGet(crow::Response &res, const crow::Request &req,
+ const std::vector<std::string> &params) override
+ {
+ std::shared_ptr<AsyncResp> asyncResp = std::make_shared<AsyncResp>(res);
+
+ asyncResp->res.jsonValue["@odata.id"] =
+ "/redfish/v1/Registries/OpenBMC";
+ asyncResp->res.jsonValue["@odata.type"] =
+ "#MessageRegistryFile.v1_1_0.MessageRegistryFile";
+ asyncResp->res.jsonValue["@odata.context"] =
+ "/redfish/v1/$metadata#MessageRegistryFile.MessageRegistryFile";
+ asyncResp->res.jsonValue["Name"] = "Open BMC Message Registry File";
+ asyncResp->res.jsonValue["Description"] =
+ "Open BMC Message Registry File Location";
+ asyncResp->res.jsonValue["Id"] =
+ message_registries::openbmc::header.registryPrefix;
+ asyncResp->res.jsonValue["Registry"] =
+ message_registries::openbmc::header.id;
+ nlohmann::json &messageRegistryLanguageArray =
+ asyncResp->res.jsonValue["Languages"];
+ messageRegistryLanguageArray = nlohmann::json::array();
+ messageRegistryLanguageArray.push_back({"en"});
+ asyncResp->res.jsonValue["Languages@odata.count"] =
+ messageRegistryLanguageArray.size();
+ nlohmann::json &messageRegistryLocationArray =
+ asyncResp->res.jsonValue["Location"];
+ messageRegistryLocationArray = nlohmann::json::array();
+ messageRegistryLocationArray.push_back(
+ {{"Language", "en"},
+ {"Uri", "/redfish/v1/Registries/OpenBMC/OpenBMC"}});
+ asyncResp->res.jsonValue["Location@odata.count"] =
+ messageRegistryLocationArray.size();
+ }
+};
+
+class OpenBMCMessageRegistry : public Node
+{
+ public:
+ template <typename CrowApp>
+ OpenBMCMessageRegistry(CrowApp &app) :
+ Node(app, "/redfish/v1/Registries/OpenBMC/OpenBMC/")
+ {
+ entityPrivileges = {
+ {boost::beast::http::verb::get, {{"Login"}}},
+ {boost::beast::http::verb::head, {{"Login"}}},
+ {boost::beast::http::verb::patch, {{"ConfigureManager"}}},
+ {boost::beast::http::verb::put, {{"ConfigureManager"}}},
+ {boost::beast::http::verb::delete_, {{"ConfigureManager"}}},
+ {boost::beast::http::verb::post, {{"ConfigureManager"}}}};
+ }
+
+ private:
+ void doGet(crow::Response &res, const crow::Request &req,
+ const std::vector<std::string> &params) override
+ {
+ std::shared_ptr<AsyncResp> asyncResp = std::make_shared<AsyncResp>(res);
+
+ asyncResp->res.jsonValue["@Redfish.Copyright"] =
+ message_registries::openbmc::header.copyright;
+ asyncResp->res.jsonValue["@odata.type"] =
+ message_registries::openbmc::header.type;
+ asyncResp->res.jsonValue["Id"] = message_registries::openbmc::header.id;
+ asyncResp->res.jsonValue["Name"] =
+ message_registries::openbmc::header.name;
+ asyncResp->res.jsonValue["Language"] =
+ message_registries::openbmc::header.language;
+ asyncResp->res.jsonValue["Description"] =
+ message_registries::openbmc::header.description;
+ asyncResp->res.jsonValue["RegistryPrefix"] =
+ message_registries::openbmc::header.registryPrefix;
+ asyncResp->res.jsonValue["RegistryVersion"] =
+ message_registries::openbmc::header.registryVersion;
+ asyncResp->res.jsonValue["OwningEntity"] =
+ message_registries::openbmc::header.owningEntity;
+ nlohmann::json &messageArray = asyncResp->res.jsonValue["Messages"];
+ messageArray = nlohmann::json::array();
+
+ // Go through the Message Registry and populate each Message
+ for (const message_registries::MessageEntry &message :
+ message_registries::openbmc::registry)
+ {
+ messageArray.push_back(
+ {{message.first,
+ {{"Description", message.second.description},
+ {"Message", message.second.message},
+ {"Severity", message.second.severity},
+ {"NumberOfArgs", message.second.numberOfArgs},
+ {"Resolution", message.second.resolution}}}});
+ if (message.second.numberOfArgs > 0)
+ {
+ nlohmann::json &messageParamArray =
+ messageArray.back()[message.first]["ParamTypes"];
+ for (int i = 0; i < message.second.numberOfArgs; i++)
+ {
+ messageParamArray.push_back(message.second.paramTypes[i]);
+ }
+ }
+ }
+ }
+};
+
} // namespace redfish