summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-phosphor
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-phosphor')
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend4
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch120
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0002-Match-BMCWeb-crashdump-to-the-D-Bus-interface-provid.patch331
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend12
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/ipmitool_%.bbappend6
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend5
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-manager/multi-node-manager.bb4
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/phosphor-u-boot-mgr/phosphor-u-boot-mgr_git.bb8
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/state/post-code-manager_git.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager/0006-Use-groupmems-instead-of-getgrnam_r-due-to-overlay.patch15
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/virtual-media/virtual-media.bb1
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/config.json9
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend4
16 files changed, 429 insertions, 98 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend
index 9a25eafa9..4e56cb963 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend
@@ -1,8 +1,8 @@
# this is here just to bump faster than upstream
SRC_URI = "git://github.com/openbmc/entity-manager.git"
-SRCREV = "41622a95da34e3aacbf2b70d687d3a3a7c816c8a"
+SRCREV = "29d83258f1268b3c41f97649518fa9bb1ffe83ed"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-EXTRA_OECMAKE = "-DYOCTO=1 -DUSE_OVERLAYS=0"
+EXTRA_OECMAKE = "-DYOCTO=1"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend
index 9690ec20f..580fd9038 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend
@@ -1,5 +1,5 @@
SRC_URI = "git://github.com/openbmc/phosphor-dbus-interfaces.git"
-SRCREV = "79064a8e0c49b35cfa1c343cef31f21ebfd7298d"
+SRCREV = "8aec946e2844831cfc377c0e0136de5714c08a5b"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch
index dc3ec060e..46e94e339 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch
@@ -1,6 +1,6 @@
-From 17caf10b048450979dcd95a9f9333bbaa8c307ec Mon Sep 17 00:00:00 2001
-From: AppaRao Puli <apparao.puli@linux.intel.com>
-Date: Fri, 10 Jan 2020 08:16:10 +0530
+From 461da7ec950704a1f5bcc7f6527ed8ca119cfaf9 Mon Sep 17 00:00:00 2001
+From: Vikram Bodireddy <vikram.bodireddy@intel.com>
+Date: Tue, 24 Mar 2020 16:05:32 +0530
Subject: [PATCH] Firmware update support for StandBySpare
Firmware update support for StandBySpare. This will
@@ -26,15 +26,13 @@ Tested:
- Successfully ran redfish validater with no new errors.
-Change-Id: I59f317ac001ebf56bbf30e7f43dbec5d69fa249a
-Signed-off-by: Vikram Bodireddy <vikram.bodireddy@linux.intel.com>
-Signed-off-by: AppaRao Puli <apparao.puli@linux.intel.com>
+Signed-off-by: Vikram Bodireddy <vikram.bodireddy@intel.com>
---
- redfish-core/lib/update_service.hpp | 284 ++++++++++++++++++++++++++++++------
- 1 file changed, 241 insertions(+), 43 deletions(-)
+ redfish-core/lib/update_service.hpp | 274 +++++++++++++++++++++++++++++++-----
+ 1 file changed, 241 insertions(+), 33 deletions(-)
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
-index ec9600e..9daf6ce 100644
+index e9793eb..a913bac 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -30,6 +30,17 @@ static std::unique_ptr<sdbusplus::bus::match::match> fwUpdateMatcher;
@@ -55,7 +53,7 @@ index ec9600e..9daf6ce 100644
static void cleanUp()
{
-@@ -37,27 +48,118 @@ static void cleanUp()
+@@ -37,27 +48,119 @@ static void cleanUp()
fwUpdateMatcher = nullptr;
}
static void activateImage(const std::string &objPath,
@@ -64,7 +62,6 @@ index ec9600e..9daf6ce 100644
+ const std::vector<std::string> &imgUriTargets)
{
BMCWEB_LOG_DEBUG << "Activate image for " << objPath << " " << service;
-+
+ // If targets is empty, it will apply to the active.
+ if (imgUriTargets.size() == 0)
+ {
@@ -72,8 +69,10 @@ index ec9600e..9daf6ce 100644
+ [](const boost::system::error_code error_code) {
+ if (error_code)
+ {
-+ BMCWEB_LOG_DEBUG << "RequestedActivation failed: ec = "
-+ << error_code;
++ BMCWEB_LOG_DEBUG
++ << "RequestedActivation failed: error_code = "
++ << error_code;
++ BMCWEB_LOG_DEBUG << "error msg = " << error_code.message();
+ }
+ },
+ service, objPath, "org.freedesktop.DBus.Properties", "Set",
@@ -181,54 +180,51 @@ index ec9600e..9daf6ce 100644
// then no asyncResp updates will occur
static void softwareInterfaceAdded(std::shared_ptr<AsyncResp> asyncResp,
+ const std::vector<std::string> imgUriTargets,
- sdbusplus::message::message &m)
+ sdbusplus::message::message &m,
+ const crow::Request &req)
{
- std::vector<std::pair<
-@@ -69,27 +171,24 @@ static void softwareInterfaceAdded(std::shared_ptr<AsyncResp> asyncResp,
+@@ -70,25 +173,27 @@ static void softwareInterfaceAdded(std::shared_ptr<AsyncResp> asyncResp,
m.read(objPath, interfacesProperties);
- BMCWEB_LOG_DEBUG << "obj path = " << objPath.str;
-+ BMCWEB_LOG_DEBUG << "Software Interface Added. objPath = " << objPath.str;
++ BMCWEB_LOG_DEBUG << "Software Interface Added. obj path = " << objPath.str;
for (auto &interface : interfacesProperties)
{
-- BMCWEB_LOG_DEBUG << "interface = " << interface.first;
--
+ BMCWEB_LOG_DEBUG << "interface = " << interface.first;
+
- if (interface.first == "xyz.openbmc_project.Software.Activation")
+ if (interface.first == activationIntf)
{
// Found our interface, disable callbacks
fwUpdateMatcher = nullptr;
--
+
// Retrieve service and activate
crow::connections::systemBus->async_method_call(
-- [objPath, asyncResp](
-+ [objPath, asyncResp, imgTargets{imgUriTargets}](
- const boost::system::error_code error_code,
- const std::vector<std::pair<
- std::string, std::vector<std::string>>> &objInfo) {
+- [objPath, asyncResp,
++ [objPath, asyncResp, imgTargets{imgUriTargets},
+ req](const boost::system::error_code error_code,
+ const std::vector<std::pair<
+ std::string, std::vector<std::string>>> &objInfo) {
if (error_code)
{
- BMCWEB_LOG_DEBUG << "error_code = " << error_code;
-- BMCWEB_LOG_DEBUG << "error msg = "
-- << error_code.message();
+ BMCWEB_LOG_DEBUG
-+ << "GetSoftwareObject path failed: ec = "
++ << "GetSoftwareObject path failed: error_code = "
+ << error_code;
+ BMCWEB_LOG_DEBUG << "error msg = "
+ << error_code.message();
if (asyncResp)
- {
- messages::internalError(asyncResp->res);
-@@ -113,8 +212,7 @@ static void softwareInterfaceAdded(std::shared_ptr<AsyncResp> asyncResp,
- // xyz.openbmc_project.Software.Activation interface
+@@ -115,7 +220,7 @@ static void softwareInterfaceAdded(std::shared_ptr<AsyncResp> asyncResp,
// is added
fwAvailableTimer = nullptr;
--
+
- activateImage(objPath.str, objInfo[0].first);
+ activateImage(objPath.str, objInfo[0].first, imgTargets);
if (asyncResp)
{
- redfish::messages::success(asyncResp->res);
-@@ -124,17 +222,16 @@ static void softwareInterfaceAdded(std::shared_ptr<AsyncResp> asyncResp,
+ std::shared_ptr<task::TaskData> task =
+@@ -196,17 +301,16 @@ static void softwareInterfaceAdded(std::shared_ptr<AsyncResp> asyncResp,
"xyz.openbmc_project.ObjectMapper",
"/xyz/openbmc_project/object_mapper",
"xyz.openbmc_project.ObjectMapper", "GetObject", objPath.str,
@@ -250,30 +246,20 @@ index ec9600e..9daf6ce 100644
{
// Only allow one FW update at a time
if (fwUpdateInProgress != false)
-@@ -145,7 +242,6 @@ static void monitorForSoftwareAvailable(std::shared_ptr<AsyncResp> asyncResp,
- }
- return;
- }
--
- fwAvailableTimer =
- std::make_unique<boost::asio::steady_timer>(*req.ioService);
-
-@@ -174,10 +270,10 @@ static void monitorForSoftwareAvailable(std::shared_ptr<AsyncResp> asyncResp,
+@@ -246,9 +350,10 @@ static void monitorForSoftwareAvailable(std::shared_ptr<AsyncResp> asyncResp,
}
});
-- auto callback = [asyncResp](sdbusplus::message::message &m) {
-- BMCWEB_LOG_DEBUG << "Match fired";
-- softwareInterfaceAdded(asyncResp, m);
-- };
-+ auto callback =
-+ [asyncResp, imgTargets{imgUriTargets}](sdbusplus::message::message &m) {
-+ softwareInterfaceAdded(asyncResp, imgTargets, m);
-+ };
+- auto callback = [asyncResp, req](sdbusplus::message::message &m) {
++ auto callback = [asyncResp, imgTargets{imgUriTargets},
++ req](sdbusplus::message::message &m) {
+ BMCWEB_LOG_DEBUG << "Match fired";
+- softwareInterfaceAdded(asyncResp, m, req);
++ softwareInterfaceAdded(asyncResp, imgTargets, m, req);
+ };
fwUpdateInProgress = true;
-
-@@ -286,9 +382,12 @@ class UpdateServiceActionsSimpleUpdate : public Node
+@@ -358,9 +463,12 @@ class UpdateServiceActionsSimpleUpdate : public Node
std::string fwFile = imageURI.substr(separator + 1);
BMCWEB_LOG_DEBUG << "Server: " << tftpServer + " File: " << fwFile;
@@ -287,7 +273,7 @@ index ec9600e..9daf6ce 100644
// TFTP can take up to 2 minutes depending on image size and
// connection speed. Return to caller as soon as the TFTP operation
-@@ -322,7 +421,8 @@ class UpdateServiceActionsSimpleUpdate : public Node
+@@ -394,7 +502,8 @@ class UpdateServiceActionsSimpleUpdate : public Node
class UpdateService : public Node
{
public:
@@ -297,7 +283,7 @@ index ec9600e..9daf6ce 100644
{
entityPrivileges = {
{boost::beast::http::verb::get, {{"Login"}}},
-@@ -334,6 +434,9 @@ class UpdateService : public Node
+@@ -406,6 +515,9 @@ class UpdateService : public Node
}
private:
@@ -307,7 +293,7 @@ index ec9600e..9daf6ce 100644
void doGet(crow::Response &res, const crow::Request &req,
const std::vector<std::string> &params) override
{
-@@ -346,6 +449,8 @@ class UpdateService : public Node
+@@ -416,6 +528,8 @@ class UpdateService : public Node
res.jsonValue["Description"] = "Service for Software Update";
res.jsonValue["Name"] = "Update Service";
res.jsonValue["HttpPushUri"] = "/redfish/v1/UpdateService";
@@ -316,7 +302,7 @@ index ec9600e..9daf6ce 100644
// UpdateService cannot be disabled
res.jsonValue["ServiceEnabled"] = true;
res.jsonValue["FirmwareInventory"] = {
-@@ -405,9 +510,14 @@ class UpdateService : public Node
+@@ -475,9 +589,14 @@ class UpdateService : public Node
std::shared_ptr<AsyncResp> asyncResp = std::make_shared<AsyncResp>(res);
std::optional<nlohmann::json> pushUriOptions;
@@ -333,15 +319,7 @@ index ec9600e..9daf6ce 100644
return;
}
-@@ -464,7 +574,6 @@ class UpdateService : public Node
- messages::internalError(asyncResp->res);
- return;
- }
-- messages::success(asyncResp->res);
- },
- "xyz.openbmc_project.Settings",
- "/xyz/openbmc_project/software/apply_time",
-@@ -475,6 +584,98 @@ class UpdateService : public Node
+@@ -545,6 +664,98 @@ class UpdateService : public Node
}
}
}
@@ -440,7 +418,7 @@ index ec9600e..9daf6ce 100644
}
void doPost(crow::Response &res, const crow::Request &req,
-@@ -485,7 +686,7 @@ class UpdateService : public Node
+@@ -555,7 +766,7 @@ class UpdateService : public Node
std::shared_ptr<AsyncResp> asyncResp = std::make_shared<AsyncResp>(res);
// Setup callback for when new software detected
@@ -449,7 +427,7 @@ index ec9600e..9daf6ce 100644
std::string filepath(
"/tmp/images/" +
-@@ -574,8 +775,7 @@ class SoftwareInventoryCollection : public Node
+@@ -641,8 +852,7 @@ class SoftwareInventoryCollection : public Node
"/xyz/openbmc_project/object_mapper",
"xyz.openbmc_project.ObjectMapper", "GetSubTree",
"/xyz/openbmc_project/software", static_cast<int32_t>(0),
@@ -459,7 +437,7 @@ index ec9600e..9daf6ce 100644
}
};
-@@ -760,7 +960,7 @@ class SoftwareInventory : public Node
+@@ -825,7 +1035,7 @@ class SoftwareInventory : public Node
},
obj.second[0].first, obj.first,
"org.freedesktop.DBus.Properties", "GetAll",
@@ -468,7 +446,7 @@ index ec9600e..9daf6ce 100644
}
if (!found)
{
-@@ -781,9 +981,7 @@ class SoftwareInventory : public Node
+@@ -846,9 +1056,7 @@ class SoftwareInventory : public Node
"xyz.openbmc_project.ObjectMapper",
"/xyz/openbmc_project/object_mapper",
"xyz.openbmc_project.ObjectMapper", "GetSubTree", "/",
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0002-Match-BMCWeb-crashdump-to-the-D-Bus-interface-provid.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0002-Match-BMCWeb-crashdump-to-the-D-Bus-interface-provid.patch
new file mode 100644
index 000000000..995b62750
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0002-Match-BMCWeb-crashdump-to-the-D-Bus-interface-provid.patch
@@ -0,0 +1,331 @@
+From 7c55dfb33e035f8a31f11fd3e047a4b674f392ac Mon Sep 17 00:00:00 2001
+From: Johnathan Mantey <johnathanx.mantey@intel.com>
+Date: Tue, 10 Mar 2020 17:15:28 -0700
+Subject: [PATCH] Match BMCWeb crashdump to the D-Bus interface provided by
+ crashdump
+
+The crashdump service changed to eliminate hangs, and failures to
+retrieve the crashdump data. The BMCWeb crashdump handling code has to
+be aligned with the server.
+
+Tested:
+Confirmed each of the primary functions operates as expected.
+Getting the collection
+Getting the entries
+Forcing an on demand capture
+Polling for the on demand capture to complete
+Retrieving the creashdump data
+Clearing all of the crashdump content
+
+Change-Id: Ie8fb48369a782d905b942c1f9bef11f387f6463e
+Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
+---
+ redfish-core/lib/log_services.hpp | 268 +++++++++++++++++-------------
+ 1 file changed, 150 insertions(+), 118 deletions(-)
+
+diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
+index f864007..4b13897 100644
+--- a/redfish-core/lib/log_services.hpp
++++ b/redfish-core/lib/log_services.hpp
+@@ -1575,109 +1575,80 @@ class CrashdumpClear : public Node
+ }
+ };
+
+-std::string getLogCreatedTime(const std::string &crashdump)
+-{
+- nlohmann::json crashdumpJson =
+- nlohmann::json::parse(crashdump, nullptr, false);
+- if (crashdumpJson.is_discarded())
+- {
+- return std::string();
+- }
+-
+- nlohmann::json::const_iterator cdIt = crashdumpJson.find("crash_data");
+- if (cdIt == crashdumpJson.end())
+- {
+- return std::string();
+- }
+-
+- nlohmann::json::const_iterator siIt = cdIt->find("METADATA");
+- if (siIt == cdIt->end())
+- {
+- return std::string();
+- }
+-
+- nlohmann::json::const_iterator tsIt = siIt->find("timestamp");
+- if (tsIt == siIt->end())
+- {
+- return std::string();
+- }
+-
+- const std::string *logTime = tsIt->get_ptr<const std::string *>();
+- if (logTime == nullptr)
+- {
+- return std::string();
+- }
+-
+- std::string redfishDateTime = *logTime;
+- if (redfishDateTime.length() > 2)
+- {
+- redfishDateTime.insert(redfishDateTime.end() - 2, ':');
+- }
+-
+- return redfishDateTime;
+-}
+-
+-std::string getLogFileName(const std::string &logTime)
+-{
+- // Set the crashdump file name to "crashdump_<logTime>.json" using the
+- // created time without the timezone info
+- std::string fileTime = logTime;
+- size_t plusPos = fileTime.rfind('+');
+- if (plusPos != std::string::npos)
+- {
+- fileTime.erase(plusPos);
+- }
+- return "crashdump_" + fileTime + ".json";
+-}
+-
+ static void logCrashdumpEntry(std::shared_ptr<AsyncResp> asyncResp,
+ const std::string &logID,
+ nlohmann::json &logEntryJson)
+ {
+- auto getStoredLogCallback = [asyncResp, logID, &logEntryJson](
+- const boost::system::error_code ec,
+- const std::variant<std::string> &resp) {
+- if (ec)
+- {
+- BMCWEB_LOG_DEBUG << "failed to get log ec: " << ec.message();
+- if (ec.value() ==
+- boost::system::linux_error::bad_request_descriptor)
++ auto getStoredLogCallback =
++ [asyncResp, logID, &logEntryJson](
++ const boost::system::error_code ec,
++ const std::vector<std::pair<std::string, VariantType>> &params) {
++ if (ec)
+ {
+- messages::resourceNotFound(asyncResp->res, "LogEntry", logID);
++ BMCWEB_LOG_DEBUG << "failed to get log ec: " << ec.message();
++ if (ec.value() ==
++ boost::system::linux_error::bad_request_descriptor)
++ {
++ messages::resourceNotFound(asyncResp->res, "LogEntry",
++ logID);
++ }
++ else
++ {
++ messages::internalError(asyncResp->res);
++ }
++ return;
+ }
+- else
++
++ std::string timestamp{};
++ std::string filename{};
++ for (auto property : params)
+ {
+- messages::internalError(asyncResp->res);
++ if (property.first == "Timestamp")
++ {
++ const std::string *value =
++ sdbusplus::message::variant_ns::get_if<std::string>(
++ &property.second);
++ if (value != nullptr)
++ {
++ timestamp = *value;
++ }
++ }
++ else if (property.first == "Filename")
++ {
++ const std::string *value =
++ sdbusplus::message::variant_ns::get_if<std::string>(
++ &property.second);
++ if (value != nullptr)
++ {
++ filename = *value;
++ }
++ }
+ }
+- return;
+- }
+- const std::string *log = std::get_if<std::string>(&resp);
+- if (log == nullptr)
+- {
+- messages::internalError(asyncResp->res);
+- return;
+- }
+- std::string logTime = getLogCreatedTime(*log);
+- std::string fileName = getLogFileName(logTime);
+
+- logEntryJson = {
+- {"@odata.type", "#LogEntry.v1_4_0.LogEntry"},
+- {"@odata.id",
+- "/redfish/v1/Systems/system/LogServices/Crashdump/Entries/" +
+- logID},
+- {"Name", "CPU Crashdump"},
+- {"Id", logID},
+- {"EntryType", "Oem"},
+- {"OemRecordFormat", "Crashdump URI"},
+- {"Message",
+- "/redfish/v1/Systems/system/LogServices/Crashdump/Entries/" +
+- logID + "/" + fileName},
+- {"Created", std::move(logTime)}};
+- };
++ if (filename.empty() || timestamp.empty())
++ {
++ messages::resourceMissingAtURI(asyncResp->res, logID);
++ return;
++ }
++
++ std::string crashdumpURI =
++ "/redfish/v1/Systems/system/LogServices/Crashdump/Entries/" +
++ logID + "/" + filename;
++ logEntryJson = {{"@odata.type", "#LogEntry.v1_4_0.LogEntry"},
++ {"@odata.id", "/redfish/v1/Systems/system/"
++ "LogServices/Crashdump/Entries/" +
++ logID},
++ {"Name", "CPU Crashdump"},
++ {"Id", logID},
++ {"EntryType", "Oem"},
++ {"OemRecordFormat", "Crashdump URI"},
++ {"Message", std::move(crashdumpURI)},
++ {"Created", std::move(timestamp)}};
++ };
+ crow::connections::systemBus->async_method_call(
+ std::move(getStoredLogCallback), crashdumpObject,
+ crashdumpPath + std::string("/") + logID,
+- "org.freedesktop.DBus.Properties", "Get", crashdumpInterface, "Log");
++ "org.freedesktop.DBus.Properties", "GetAll", crashdumpInterface);
+ }
+
+ class CrashdumpEntryCollection : public Node
+@@ -1827,38 +1798,99 @@ class CrashdumpFile : public Node
+ const std::string &logID = params[0];
+ const std::string &fileName = params[1];
+
+- auto getStoredLogCallback = [asyncResp, logID, fileName](
+- const boost::system::error_code ec,
+- const std::variant<std::string> &resp) {
+- if (ec)
+- {
+- BMCWEB_LOG_DEBUG << "failed to get log ec: " << ec.message();
+- messages::internalError(asyncResp->res);
+- return;
+- }
+- const std::string *log = std::get_if<std::string>(&resp);
+- if (log == nullptr)
+- {
+- messages::internalError(asyncResp->res);
+- return;
+- }
++ auto getStoredLogCallback =
++ [asyncResp, logID, fileName](
++ const boost::system::error_code ec,
++ const std::vector<std::pair<std::string, VariantType>> &resp) {
++ if (ec)
++ {
++ BMCWEB_LOG_DEBUG << "failed to get log ec: "
++ << ec.message();
++ messages::internalError(asyncResp->res);
++ return;
++ }
+
+- // Verify the file name parameter is correct
+- if (fileName != getLogFileName(getLogCreatedTime(*log)))
+- {
+- messages::resourceMissingAtURI(asyncResp->res, fileName);
+- return;
+- }
++ std::string dbusFilename{};
++ std::string dbusTimestamp{};
++ std::string dbusFilepath{};
+
+- // Configure this to be a file download when accessed from a browser
+- asyncResp->res.addHeader("Content-Disposition", "attachment");
+- asyncResp->res.body() = *log;
+- };
++ for (auto property : resp)
++ {
++ if (property.first == "Timestamp")
++ {
++ const std::string *value =
++ sdbusplus::message::variant_ns::get_if<std::string>(
++ &property.second);
++ if (value != nullptr)
++ {
++ dbusTimestamp = *value;
++ }
++ }
++ else if (property.first == "Filename")
++ {
++ const std::string *value =
++ sdbusplus::message::variant_ns::get_if<std::string>(
++ &property.second);
++ if (value != nullptr)
++ {
++ dbusFilename = *value;
++ }
++ }
++ else if (property.first == "Log")
++ {
++ const std::string *value =
++ sdbusplus::message::variant_ns::get_if<std::string>(
++ &property.second);
++ if (value != nullptr)
++ {
++ dbusFilepath = *value;
++ }
++ }
++ }
++
++ if (dbusFilename.empty() || dbusTimestamp.empty() ||
++ dbusFilepath.empty())
++ {
++ messages::resourceMissingAtURI(asyncResp->res, fileName);
++ return;
++ }
++
++ // Verify the file name parameter is correct
++ if (fileName != dbusFilename)
++ {
++ messages::resourceMissingAtURI(asyncResp->res, fileName);
++ return;
++ }
++
++ if (!std::filesystem::exists(dbusFilepath))
++ {
++ messages::resourceMissingAtURI(asyncResp->res, fileName);
++ return;
++ }
++ std::ifstream ifs(dbusFilepath, std::ios::in |
++ std::ios::binary |
++ std::ios::ate);
++ std::ifstream::pos_type fileSize = ifs.tellg();
++ if (fileSize < 0)
++ {
++ messages::generalError(asyncResp->res);
++ return;
++ }
++ ifs.seekg(0, std::ios::beg);
++
++ std::string dumpData;
++ dumpData.reserve(static_cast<unsigned int>(fileSize));
++ ifs.read(dumpData.data(), static_cast<int>(fileSize));
++
++ // Configure this to be a file download when accessed from
++ // a browser
++ asyncResp->res.addHeader("Content-Disposition", "attachment");
++ asyncResp->res.body() = dumpData.data();
++ };
+ crow::connections::systemBus->async_method_call(
+ std::move(getStoredLogCallback), crashdumpObject,
+ crashdumpPath + std::string("/") + logID,
+- "org.freedesktop.DBus.Properties", "Get", crashdumpInterface,
+- "Log");
++ "org.freedesktop.DBus.Properties", "GetAll", crashdumpInterface);
+ }
+ };
+
+--
+2.25.1
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend
index 54b4e1b6b..8caee0933 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend
@@ -1,5 +1,5 @@
SRC_URI = "git://github.com/openbmc/bmcweb.git"
-SRCREV = "363c23022eb3fb0cde577405e8a084a2e819b642"
+SRCREV = "12c7f4388b58a974265827ab62d3981ba98ed8f2"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
@@ -9,8 +9,16 @@ USERADD_PARAM_${PN} = "-r -s /usr/sbin/nologin -d /home/bmcweb -m -G shadow bmcw
GROUPADD_PARAM_${PN} = "web; redfish "
-SRC_URI += "file://0001-Firmware-update-support-for-StandBySpare.patch"
+SRC_URI += "file://0001-Firmware-update-support-for-StandBySpare.patch \
+ file://0002-Match-BMCWeb-crashdump-to-the-D-Bus-interface-provid.patch \
+"
# Enable PFR support
EXTRA_OECMAKE += "${@bb.utils.contains('IMAGE_FSTYPES', 'intel-pfr', '-DBMCWEB_ENABLE_REDFISH_PROVISIONING_FEATURE=ON', '', d)}"
+# Enable NBD_PROXY
+EXTRA_OECMAKE += " -DBMCWEB_ENABLE_VM_NBDPROXY=ON"
+
+# Enable Validation unsecure based on IMAGE_FEATURES
+EXTRA_OECMAKE += "${@bb.utils.contains('EXTRA_IMAGE_FEATURES', 'validation-unsecure', '-DBMCWEB_ENABLE_VALIDATION_UNSECURE_FEATURE=ON', '', d)}"
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/ipmitool_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/ipmitool_%.bbappend
deleted file mode 100644
index 84e250b66..000000000
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/ipmitool_%.bbappend
+++ /dev/null
@@ -1,6 +0,0 @@
-
-# Disable the shell to remove the usage of readline lib
-# to fix the license conflict issue. More information:
-# https://lists.ozlabs.org/pipermail/openbmc/2019-November/019678.html
-
-EXTRA_OECONF_append = " --disable-ipmishell"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
index fc724eb33..d7cec2d76 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
@@ -1,8 +1,9 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
PROJECT_SRC_DIR := "${THISDIR}/${PN}"
-SRC_URI = "git://github.com/openbmc/phosphor-host-ipmid"
-SRCREV = "3165569a562983cf3c43b0b10c23e7695a031b56"
+# TODO: latest is breaking sensor list, needs triage before unpin
+SRC_URI = "git://github.com/openbmc/phosphor-host-ipmid;nobranch=1"
+SRCREV = "e7e8b8166a1c0e352ee6e0e1daa76abbff228ed6"
SRC_URI += "file://phosphor-ipmi-host.service \
file://0010-fix-get-system-GUID-ipmi-command.patch \
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-manager/multi-node-manager.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-manager/multi-node-manager.bb
index 620a2ab51..f6a6b1f1b 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-manager/multi-node-manager.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-manager/multi-node-manager.bb
@@ -4,10 +4,12 @@ DESCRIPTION = "Daemon to handle chassis level shared resources on multi-node pla
SRC_URI = "git://github.com/Intel-BMC/multi-node-manager.git;protocol=ssh"
SRCREV = "34d959285a3ca12c4bfefa4040d82d571c78843b"
+S = "${WORKDIR}/git/"
+
PV = "0.1+git${SRCPV}"
LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
+LIC_FILES_CHKSUM = "file://${INTELBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658"
SYSTEMD_SERVICE_${PN} = "multi-node-manager.service"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/phosphor-u-boot-mgr/phosphor-u-boot-mgr_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/phosphor-u-boot-mgr/phosphor-u-boot-mgr_git.bb
index 2a561dbe1..48f740637 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/phosphor-u-boot-mgr/phosphor-u-boot-mgr_git.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/phosphor-u-boot-mgr/phosphor-u-boot-mgr_git.bb
@@ -3,14 +3,14 @@ DESCRIPTION = "Daemon to read or write U-Boot environment variables"
PV = "1.0+git${SRCPV}"
-S = "${WORKDIR}/git/phosphor-u-boot-env-mgr"
+S = "${WORKDIR}/git"
LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-SRC_URI = "git://github.com/Intel-BMC/provingground.git;protocol=ssh"
+SRC_URI = "git://github.com/openbmc/phosphor-u-boot-env-mgr.git;protocol=ssh"
-SRCREV = "bee56d62b209088454d166d1efae4825a2b175df"
+SRCREV = "7a36277b6fdf33a554a4f9e2258e39d1696b00c2"
inherit cmake systemd
SYSTEMD_SERVICE_${PN} = "xyz.openbmc_project.U_Boot.Environment.Manager.service"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend
index d681a6266..d48a66d65 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend
@@ -1,4 +1,4 @@
-SRCREV = "883fb3a97b3ac47eab7d69e0841ff38ba5b9b2aa"
+SRCREV = "6b1247a16d52be853c18015e7163d60abce5c00a"
SRC_URI = "git://github.com/openbmc/dbus-sensors.git"
DEPENDS_append = " libgpiod libmctp"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend
index aef2a020f..d23480a05 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend
@@ -1,3 +1,5 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
DEPENDS += "gtest"
+
+SYSTEMD_SERVICE_${PN}-bmc += "obmc-mapper.target"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/state/post-code-manager_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/state/post-code-manager_git.bb
index 97896d72a..484d6f80d 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/state/post-code-manager_git.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/state/post-code-manager_git.bb
@@ -2,7 +2,7 @@ SUMMARY = "Phosphor post code manager"
DESCRIPTION = "Post Code Manager"
SRC_URI = "git://github.com/openbmc/phosphor-post-code-manager.git"
-SRCREV = "655837973feb51da3767f5f246ec198877900b0b"
+SRCREV = "993d4dd9dc583e62a84c6056edffad957d7b7b5d"
S = "${WORKDIR}/git"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager/0006-Use-groupmems-instead-of-getgrnam_r-due-to-overlay.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager/0006-Use-groupmems-instead-of-getgrnam_r-due-to-overlay.patch
index 12a2bda3e..91087a155 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager/0006-Use-groupmems-instead-of-getgrnam_r-due-to-overlay.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager/0006-Use-groupmems-instead-of-getgrnam_r-due-to-overlay.patch
@@ -20,15 +20,16 @@ both getgrnam_r & groupmems and able to see proper list only
in groupmems when the issue is reproduced
Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
+Signed-off-by: jayaprakash Mutyala <mutyalax.jayaprakash@intel.com>
---
- user_service.cpp | 26 +++++++++++---------------
- 1 file changed, 11 insertions(+), 15 deletions(-)
+ user_service.cpp | 28 +++++++++++++---------------
+ 1 file changed, 13 insertions(+), 15 deletions(-)
diff --git a/user_service.cpp b/user_service.cpp
-index c3c45bd..4fdf7a1 100644
+index c3c45bd..0a6b171 100644
--- a/user_service.cpp
+++ b/user_service.cpp
-@@ -143,28 +143,24 @@ class ShadowService : public phosphor::user::UserServiceInterface
+@@ -143,28 +143,26 @@ class ShadowService : public phosphor::user::UserServiceInterface
getUsersInGroup(const std::string &groupName) const override
{
std::vector<std::string> usersInGroup;
@@ -63,11 +64,13 @@ index c3c45bd..4fdf7a1 100644
+ }
+ if (!output.empty())
+ {
++ boost::algorithm::trim_right(output[0]);
+ boost::algorithm::split(usersInGroup, output[0],
-+ boost::algorithm::is_any_of(" "));
++ boost::algorithm::is_any_of("\t "),
++ boost::token_compress_on);
}
return usersInGroup;
}
--
-2.7.4
+2.17.1
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/virtual-media/virtual-media.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/virtual-media/virtual-media.bb
index da60ca67e..833de721b 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/virtual-media/virtual-media.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/virtual-media/virtual-media.bb
@@ -13,6 +13,7 @@ LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SYSTEMD_SERVICE_${PN} += "xyz.openbmc_project.VirtualMedia.service"
DEPENDS = "udev boost nlohmann-json systemd sdbusplus"
+RDEPENDS_${PN} = "nbdkit"
inherit cmake systemd
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/config.json b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/config.json
new file mode 100644
index 000000000..348a7792d
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui/config.json
@@ -0,0 +1,9 @@
+{
+ "customKeyEnable": true,
+ "keyType" : "VT100+",
+ "customConsoleDisplaySize": {
+ "width": 100,
+ "height": 32
+ },
+ "VirtualMediaEnabled" : true
+}
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend
index e4e24c3d0..0f1d36641 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend
@@ -1,2 +1,4 @@
SRC_URI = "git://github.com/Intel-BMC/phosphor-webui;protocol=ssh;branch=intel2"
-SRCREV = "d342b21139c40528a70a2e25c1a00fab7116441a"
+FILESEXTRAPATHS_prepend_intel := "${THISDIR}/${PN}:"
+
+SRCREV = "0ecbfca6ecffe61da127d2c0b61ec26e4414d6ec"