1 #include "bmc_dump_entry.hpp" 2 3 #include "dump_manager.hpp" 4 #include "dump_offload.hpp" 5 #include "dump_utils.hpp" 6 7 #include <phosphor-logging/lg2.hpp> 8 9 namespace phosphor 10 { 11 namespace dump 12 { 13 namespace bmc 14 { 15 16 void Entry::delete_() 17 { 18 // Delete Dump file from Permanent location 19 try 20 { 21 std::filesystem::remove_all(file.parent_path()); 22 } 23 catch (const std::filesystem::filesystem_error& e) 24 { 25 // Log Error message and continue 26 lg2::error("Failed to delete dump file, errormsg: {ERROR}", "ERROR", e); 27 } 28 29 // Remove Dump entry D-bus object 30 phosphor::dump::Entry::delete_(); 31 } 32 33 void Entry::initiateOffload(std::string uri) 34 { 35 phosphor::dump::offload::requestOffload(file, id, uri); 36 offloaded(true); 37 } 38 39 void Entry::updateFromFile(const std::filesystem::path& dumpPath) 40 { 41 // Extract dump details from the file name 42 auto dumpDetails = phosphor::dump::extractDumpDetails(dumpPath); 43 if (!dumpDetails) 44 { 45 lg2::error("Failed to extract dump details from file name: {PATH}", 46 "PATH", dumpPath); 47 throw std::logic_error("Invalid dump file name format"); 48 } 49 50 auto [extractedId, extractedTimestamp, extractedSize] = *dumpDetails; 51 52 if (id != extractedId) 53 { 54 lg2::error("Id({ID}) is not matching with id on filename" 55 "({ID_FILENAME})", 56 "ID", id, "ID_FILENAME", extractedId); 57 throw std::logic_error("Invalid dump id in filename"); 58 } 59 60 // Update the entry with extracted details 61 startTime(extractedTimestamp); 62 elapsed(extractedTimestamp); 63 completedTime(extractedTimestamp); 64 size(extractedSize); 65 status(OperationStatus::Completed); 66 } 67 68 } // namespace bmc 69 } // namespace dump 70 } // namespace phosphor 71