diff options
author | Jason M. Bills <jason.m.bills@linux.intel.com> | 2020-04-08 01:43:15 +0300 |
---|---|---|
committer | Jason M. Bills <jason.m.bills@linux.intel.com> | 2020-04-13 22:35:48 +0300 |
commit | 235618c7396902842906bc3a8c90a3320aeeaeba (patch) | |
tree | 27cb132ef7a799804c6b71be460cc8e718c7dcce /meta-openbmc-mods/meta-common/recipes-phosphor | |
parent | ee6f67609223ac24c3e4f55ae7cc78c60a3fdb34 (diff) | |
download | openbmc-235618c7396902842906bc3a8c90a3320aeeaeba.tar.xz |
Update to internal 0.47
Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-phosphor')
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> ¶ms) 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>> ¶ms) { ++ 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" |