14a98e8feSDhruvaraj Subhashchandran #include "bmc_dump_entry.hpp"
24a98e8feSDhruvaraj Subhashchandran
34a98e8feSDhruvaraj Subhashchandran #include "dump_manager.hpp"
4580d91ddSDhruvaraj Subhashchandran #include "dump_offload.hpp"
5*93f06410SDhruvaraj Subhashchandran #include "dump_utils.hpp"
64a98e8feSDhruvaraj Subhashchandran
7d1f670feSDhruvaraj Subhashchandran #include <phosphor-logging/lg2.hpp>
84a98e8feSDhruvaraj Subhashchandran
94a98e8feSDhruvaraj Subhashchandran namespace phosphor
104a98e8feSDhruvaraj Subhashchandran {
114a98e8feSDhruvaraj Subhashchandran namespace dump
124a98e8feSDhruvaraj Subhashchandran {
134a98e8feSDhruvaraj Subhashchandran namespace bmc
144a98e8feSDhruvaraj Subhashchandran {
154a98e8feSDhruvaraj Subhashchandran
delete_()164a98e8feSDhruvaraj Subhashchandran void Entry::delete_()
174a98e8feSDhruvaraj Subhashchandran {
184a98e8feSDhruvaraj Subhashchandran // Delete Dump file from Permanent location
194a98e8feSDhruvaraj Subhashchandran try
204a98e8feSDhruvaraj Subhashchandran {
213fc6df48SJayanth Othayoth std::filesystem::remove_all(file.parent_path());
224a98e8feSDhruvaraj Subhashchandran }
239d2d7226SPatrick Williams catch (const std::filesystem::filesystem_error& e)
244a98e8feSDhruvaraj Subhashchandran {
254a98e8feSDhruvaraj Subhashchandran // Log Error message and continue
26d1f670feSDhruvaraj Subhashchandran lg2::error("Failed to delete dump file, errormsg: {ERROR}", "ERROR", e);
274a98e8feSDhruvaraj Subhashchandran }
284a98e8feSDhruvaraj Subhashchandran
294a98e8feSDhruvaraj Subhashchandran // Remove Dump entry D-bus object
304a98e8feSDhruvaraj Subhashchandran phosphor::dump::Entry::delete_();
314a98e8feSDhruvaraj Subhashchandran }
324a98e8feSDhruvaraj Subhashchandran
initiateOffload(std::string uri)33580d91ddSDhruvaraj Subhashchandran void Entry::initiateOffload(std::string uri)
34580d91ddSDhruvaraj Subhashchandran {
35580d91ddSDhruvaraj Subhashchandran phosphor::dump::offload::requestOffload(file, id, uri);
36580d91ddSDhruvaraj Subhashchandran offloaded(true);
37580d91ddSDhruvaraj Subhashchandran }
38580d91ddSDhruvaraj Subhashchandran
updateFromFile(const std::filesystem::path & dumpPath)39*93f06410SDhruvaraj Subhashchandran void Entry::updateFromFile(const std::filesystem::path& dumpPath)
40*93f06410SDhruvaraj Subhashchandran {
41*93f06410SDhruvaraj Subhashchandran // Extract dump details from the file name
42*93f06410SDhruvaraj Subhashchandran auto dumpDetails = phosphor::dump::extractDumpDetails(dumpPath);
43*93f06410SDhruvaraj Subhashchandran if (!dumpDetails)
44*93f06410SDhruvaraj Subhashchandran {
45*93f06410SDhruvaraj Subhashchandran lg2::error("Failed to extract dump details from file name: {PATH}",
46*93f06410SDhruvaraj Subhashchandran "PATH", dumpPath);
47*93f06410SDhruvaraj Subhashchandran throw std::logic_error("Invalid dump file name format");
48*93f06410SDhruvaraj Subhashchandran }
49*93f06410SDhruvaraj Subhashchandran
50*93f06410SDhruvaraj Subhashchandran auto [extractedId, extractedTimestamp, extractedSize] = *dumpDetails;
51*93f06410SDhruvaraj Subhashchandran
52*93f06410SDhruvaraj Subhashchandran if (id != extractedId)
53*93f06410SDhruvaraj Subhashchandran {
54*93f06410SDhruvaraj Subhashchandran lg2::error("Id({ID}) is not matching with id on filename"
55*93f06410SDhruvaraj Subhashchandran "({ID_FILENAME})",
56*93f06410SDhruvaraj Subhashchandran "ID", id, "ID_FILENAME", extractedId);
57*93f06410SDhruvaraj Subhashchandran throw std::logic_error("Invalid dump id in filename");
58*93f06410SDhruvaraj Subhashchandran }
59*93f06410SDhruvaraj Subhashchandran
60*93f06410SDhruvaraj Subhashchandran // Update the entry with extracted details
61*93f06410SDhruvaraj Subhashchandran startTime(extractedTimestamp);
62*93f06410SDhruvaraj Subhashchandran elapsed(extractedTimestamp);
63*93f06410SDhruvaraj Subhashchandran completedTime(extractedTimestamp);
64*93f06410SDhruvaraj Subhashchandran size(extractedSize);
65*93f06410SDhruvaraj Subhashchandran status(OperationStatus::Completed);
66*93f06410SDhruvaraj Subhashchandran }
67*93f06410SDhruvaraj Subhashchandran
684a98e8feSDhruvaraj Subhashchandran } // namespace bmc
694a98e8feSDhruvaraj Subhashchandran } // namespace dump
704a98e8feSDhruvaraj Subhashchandran } // namespace phosphor
71