#include "resource_dump_entry.hpp" #include "dump_utils.hpp" #include "host_transport_exts.hpp" #include "op_dump_consts.hpp" #include #include #include namespace openpower { namespace dump { namespace resource { // TODO #ibm-openbmc/issues/2859 // Revisit host transport impelementation // This value is used to identify the dump in the transport layer to host, constexpr auto TRANSPORT_DUMP_TYPE_IDENTIFIER = 9; using namespace phosphor::logging; void Entry::initiateOffload(std::string uri) { using NotAllowed = sdbusplus::xyz::openbmc_project::Common::Error::NotAllowed; using Reason = xyz::openbmc_project::Common::NotAllowed::REASON; lg2::info("Resource dump offload request id: {ID} uri: {URI} " "source dumpid: {SOURCE_DUMP_ID}", "ID", id, "URI", uri, "SOURCE_DUMP_ID", sourceDumpId()); if (!phosphor::dump::isHostRunning()) { elog( Reason("This dump can be offloaded only when the host is up")); return; } phosphor::dump::Entry::initiateOffload(uri); phosphor::dump::host::requestOffload(sourceDumpId()); } void Entry::delete_() { auto srcDumpID = sourceDumpId(); auto dumpId = id; if ((!offloadUri().empty()) && (phosphor::dump::isHostRunning())) { lg2::error("Dump offload is in progress, cannot delete dump, " "id: {DUMP_ID} srcdumpid: {SRC_DUMP_ID}", "DUMP_ID", dumpId, "SRC_DUMP_ID", srcDumpID); elog( xyz::openbmc_project::Common::NotAllowed::REASON( "Dump offload is in progress")); } lg2::info("Resource dump delete id: {DUMP_ID} srcdumpid: {SRC_DUMP_ID}", "DUMP_ID", dumpId, "SRC_DUMP_ID", srcDumpID); // Remove resource dump when host is up by using source dump id // which is present in resource dump entry dbus object as a property. if ((phosphor::dump::isHostRunning()) && (srcDumpID != INVALID_SOURCE_ID)) { try { phosphor::dump::host::requestDelete(srcDumpID, TRANSPORT_DUMP_TYPE_IDENTIFIER); } catch (const std::exception& e) { lg2::error("Error deleting dump from host id: {DUMP_ID} " "host id: {SRC_DUMP_ID} error: {ERROR}", "DUMP_ID", dumpId, "SRC_DUMP_ID", srcDumpID, "ERROR", e); elog(); } } // Remove Dump entry D-bus object phosphor::dump::Entry::delete_(); } } // namespace resource } // namespace dump } // namespace openpower