18b9b4690SDhruvaraj Subhashchandran #include "system_dump_entry.hpp"
28b9b4690SDhruvaraj Subhashchandran
32279386bSRamesh Iyyar #include "dump_utils.hpp"
4131994beSRamesh Iyyar #include "host_transport_exts.hpp"
5ad50d422SDhruvaraj Subhashchandran #include "op_dump_consts.hpp"
68b9b4690SDhruvaraj Subhashchandran
76a54d9afSDhruvaraj Subhashchandran #include <phosphor-logging/elog-errors.hpp>
8d1f670feSDhruvaraj Subhashchandran #include <phosphor-logging/lg2.hpp>
96a54d9afSDhruvaraj Subhashchandran #include <xyz/openbmc_project/Common/error.hpp>
106a54d9afSDhruvaraj Subhashchandran
11341d683dSDhruvaraj Subhashchandran namespace openpower
128b9b4690SDhruvaraj Subhashchandran {
138b9b4690SDhruvaraj Subhashchandran namespace dump
148b9b4690SDhruvaraj Subhashchandran {
158b9b4690SDhruvaraj Subhashchandran namespace system
168b9b4690SDhruvaraj Subhashchandran {
174c63ce5eSDhruvaraj Subhashchandran // TODO #ibm-openbmc/issues/2859
184c63ce5eSDhruvaraj Subhashchandran // Revisit host transport impelementation
194c63ce5eSDhruvaraj Subhashchandran // This value is used to identify the dump in the transport layer to host,
204c63ce5eSDhruvaraj Subhashchandran constexpr auto TRANSPORT_DUMP_TYPE_IDENTIFIER = 3;
216a54d9afSDhruvaraj Subhashchandran using namespace phosphor::logging;
228b9b4690SDhruvaraj Subhashchandran
initiateOffload(std::string uri)238b9b4690SDhruvaraj Subhashchandran void Entry::initiateOffload(std::string uri)
248b9b4690SDhruvaraj Subhashchandran {
25d1f670feSDhruvaraj Subhashchandran lg2::info("System dump offload request id: {ID} uri: {URI} "
26d1f670feSDhruvaraj Subhashchandran "source dumpid: {SOURCE_DUMP_ID}",
27d1f670feSDhruvaraj Subhashchandran "ID", id, "URI", uri, "SOURCE_DUMP_ID", sourceDumpId());
288b9b4690SDhruvaraj Subhashchandran phosphor::dump::Entry::initiateOffload(uri);
298b9b4690SDhruvaraj Subhashchandran phosphor::dump::host::requestOffload(sourceDumpId());
308b9b4690SDhruvaraj Subhashchandran }
318b9b4690SDhruvaraj Subhashchandran
delete_()322279386bSRamesh Iyyar void Entry::delete_()
332279386bSRamesh Iyyar {
342279386bSRamesh Iyyar auto srcDumpID = sourceDumpId();
35c1778dacSDhruvaraj Subhashchandran auto dumpId = id;
361112bdfcSDhruvaraj Subhashchandran
37*7e4edab9SDhruvaraj Subhashchandran // Offload URI will be set during dump offload
38*7e4edab9SDhruvaraj Subhashchandran // Prevent delete when offload is in progress
391112bdfcSDhruvaraj Subhashchandran if ((!offloadUri().empty()) && (phosphor::dump::isHostRunning()))
401112bdfcSDhruvaraj Subhashchandran {
41d1f670feSDhruvaraj Subhashchandran lg2::error("Dump offload is in progress id: {DUMP_ID} "
42d1f670feSDhruvaraj Subhashchandran "srcdumpid: {SRC_DUMP_ID}",
43d1f670feSDhruvaraj Subhashchandran "DUMP_ID", dumpId, "SRC_DUMP_ID", srcDumpID);
44*7e4edab9SDhruvaraj Subhashchandran elog<sdbusplus::xyz::openbmc_project::Common::Error::Unavailable>();
451112bdfcSDhruvaraj Subhashchandran }
461112bdfcSDhruvaraj Subhashchandran
47d1f670feSDhruvaraj Subhashchandran lg2::info("System dump delete id: {DUMP_ID} srcdumpid: {SRC_DUMP_ID}",
48d1f670feSDhruvaraj Subhashchandran "DUMP_ID", dumpId, "SRC_DUMP_ID", srcDumpID);
492279386bSRamesh Iyyar
502279386bSRamesh Iyyar // Remove host system dump when host is up by using source dump id
512279386bSRamesh Iyyar // which is present in system dump entry dbus object as a property.
52ad50d422SDhruvaraj Subhashchandran if ((phosphor::dump::isHostRunning()) && (srcDumpID != INVALID_SOURCE_ID))
532279386bSRamesh Iyyar {
54345e56b0SDhruvaraj Subhashchandran try
55345e56b0SDhruvaraj Subhashchandran {
564c63ce5eSDhruvaraj Subhashchandran phosphor::dump::host::requestDelete(srcDumpID,
574c63ce5eSDhruvaraj Subhashchandran TRANSPORT_DUMP_TYPE_IDENTIFIER);
582279386bSRamesh Iyyar }
59345e56b0SDhruvaraj Subhashchandran catch (const std::exception& e)
60345e56b0SDhruvaraj Subhashchandran {
61d1f670feSDhruvaraj Subhashchandran lg2::error("Error deleting dump from host id: {DUMP_ID} "
62d1f670feSDhruvaraj Subhashchandran "host id: {SRC_DUMP_ID} error: {ERROR}",
63d1f670feSDhruvaraj Subhashchandran "DUMP_ID", dumpId, "SRC_DUMP_ID", srcDumpID, "ERROR", e);
64345e56b0SDhruvaraj Subhashchandran elog<sdbusplus::xyz::openbmc_project::Common::Error::Unavailable>();
65345e56b0SDhruvaraj Subhashchandran }
66345e56b0SDhruvaraj Subhashchandran }
67345e56b0SDhruvaraj Subhashchandran
68345e56b0SDhruvaraj Subhashchandran // Remove Dump entry D-bus object
69345e56b0SDhruvaraj Subhashchandran phosphor::dump::Entry::delete_();
702279386bSRamesh Iyyar }
718b9b4690SDhruvaraj Subhashchandran } // namespace system
728b9b4690SDhruvaraj Subhashchandran } // namespace dump
73341d683dSDhruvaraj Subhashchandran } // namespace openpower
74