162337a92SDhruvaraj Subhashchandran #pragma once 262337a92SDhruvaraj Subhashchandran 362337a92SDhruvaraj Subhashchandran #include "com/ibm/Dump/Entry/Resource/server.hpp" 462337a92SDhruvaraj Subhashchandran #include "dump_entry.hpp" 5*3b44559fSJayanth Othayoth #include "dump_manager_resource.hpp" 662337a92SDhruvaraj Subhashchandran 762337a92SDhruvaraj Subhashchandran #include <sdbusplus/bus.hpp> 862337a92SDhruvaraj Subhashchandran #include <sdbusplus/server/object.hpp> 962337a92SDhruvaraj Subhashchandran 100af74a5eSJayanth Othayoth #include <chrono> 110af74a5eSJayanth Othayoth 12341d683dSDhruvaraj Subhashchandran namespace openpower 1362337a92SDhruvaraj Subhashchandran { 1462337a92SDhruvaraj Subhashchandran namespace dump 1562337a92SDhruvaraj Subhashchandran { 1662337a92SDhruvaraj Subhashchandran namespace resource 1762337a92SDhruvaraj Subhashchandran { 1862337a92SDhruvaraj Subhashchandran template <typename T> 199b18bf2dSPatrick Williams using ServerObject = typename sdbusplus::server::object_t<T>; 2062337a92SDhruvaraj Subhashchandran 219b18bf2dSPatrick Williams using EntryIfaces = sdbusplus::server::object_t< 2262337a92SDhruvaraj Subhashchandran sdbusplus::com::ibm::Dump::Entry::server::Resource>; 2362337a92SDhruvaraj Subhashchandran 2474a1f39cSAsmitha Karunanithi using originatorTypes = sdbusplus::xyz::openbmc_project::Common::server:: 2574a1f39cSAsmitha Karunanithi OriginatedBy::OriginatorTypes; 2674a1f39cSAsmitha Karunanithi 2762337a92SDhruvaraj Subhashchandran class Manager; 2862337a92SDhruvaraj Subhashchandran 2962337a92SDhruvaraj Subhashchandran /** @class Entry 3062337a92SDhruvaraj Subhashchandran * @brief Resource Dump Entry implementation. 3162337a92SDhruvaraj Subhashchandran * @details An extension to Dump::Entry class and 3262337a92SDhruvaraj Subhashchandran * A concrete implementation for the 3362337a92SDhruvaraj Subhashchandran * com::ibm::Dump::Entry::Resource DBus API 3462337a92SDhruvaraj Subhashchandran */ 3505ef8163SLei YU class Entry : virtual public phosphor::dump::Entry, virtual public EntryIfaces 3662337a92SDhruvaraj Subhashchandran { 3762337a92SDhruvaraj Subhashchandran public: 3862337a92SDhruvaraj Subhashchandran Entry() = delete; 3962337a92SDhruvaraj Subhashchandran Entry(const Entry&) = delete; 4062337a92SDhruvaraj Subhashchandran Entry& operator=(const Entry&) = delete; 4162337a92SDhruvaraj Subhashchandran Entry(Entry&&) = delete; 4262337a92SDhruvaraj Subhashchandran Entry& operator=(Entry&&) = delete; 4362337a92SDhruvaraj Subhashchandran ~Entry() = default; 4462337a92SDhruvaraj Subhashchandran 4562337a92SDhruvaraj Subhashchandran /** @brief Constructor for the resource dump Entry Object 4662337a92SDhruvaraj Subhashchandran * @param[in] bus - Bus to attach to. 4762337a92SDhruvaraj Subhashchandran * @param[in] objPath - Object path to attach to 4862337a92SDhruvaraj Subhashchandran * @param[in] dumpId - Dump id. 4962337a92SDhruvaraj Subhashchandran * @param[in] timeStamp - Dump creation timestamp 5062337a92SDhruvaraj Subhashchandran * since the epoch. 5162337a92SDhruvaraj Subhashchandran * @param[in] dumpSize - Dump size in bytes. 5262337a92SDhruvaraj Subhashchandran * @param[in] sourceId - DumpId provided by the source. 534bc1c2beSPatrick Williams * @param[in] vspStr- Input to host to generate the resource dump. 548f3f94daSDhruvaraj Subhashchandran * @param[in] usrChallenge - User Challenge needed by host to validate the 558f3f94daSDhruvaraj Subhashchandran * request. 5662337a92SDhruvaraj Subhashchandran * @param[in] status - status of the dump. 5774a1f39cSAsmitha Karunanithi * @param[in] originatorId - Id of the originator of the dump 5874a1f39cSAsmitha Karunanithi * @param[in] originatorType - Originator type 5962337a92SDhruvaraj Subhashchandran * @param[in] parent - The dump entry's parent. 6062337a92SDhruvaraj Subhashchandran */ Entry(sdbusplus::bus_t & bus,const std::string & objPath,uint32_t dumpId,uint64_t timeStamp,uint64_t dumpSize,const uint32_t sourceId,std::string vspStr,std::string usrChallenge,phosphor::dump::OperationStatus status,std::string originatorId,originatorTypes originatorType,phosphor::dump::Manager & parent)619b18bf2dSPatrick Williams Entry(sdbusplus::bus_t& bus, const std::string& objPath, uint32_t dumpId, 6262337a92SDhruvaraj Subhashchandran uint64_t timeStamp, uint64_t dumpSize, const uint32_t sourceId, 638f3f94daSDhruvaraj Subhashchandran std::string vspStr, std::string usrChallenge, 6474a1f39cSAsmitha Karunanithi phosphor::dump::OperationStatus status, std::string originatorId, 6574a1f39cSAsmitha Karunanithi originatorTypes originatorType, phosphor::dump::Manager& parent) : 6662337a92SDhruvaraj Subhashchandran phosphor::dump::Entry(bus, objPath.c_str(), dumpId, timeStamp, dumpSize, 6764f8da9eSDhruvaraj Subhashchandran std::string(), status, originatorId, 6805ef8163SLei YU originatorType, parent), 6905ef8163SLei YU EntryIfaces(bus, objPath.c_str(), EntryIfaces::action::defer_emit) 7062337a92SDhruvaraj Subhashchandran { 7162337a92SDhruvaraj Subhashchandran sourceDumpId(sourceId); 724bc1c2beSPatrick Williams vspString(vspStr); 738f3f94daSDhruvaraj Subhashchandran userChallenge(usrChallenge); 742f8e276cSDhruvaraj Subhashchandran // Emit deferred signal. 752f8e276cSDhruvaraj Subhashchandran this->openpower::dump::resource::EntryIfaces::emit_object_added(); 7662337a92SDhruvaraj Subhashchandran }; 7762337a92SDhruvaraj Subhashchandran 7862337a92SDhruvaraj Subhashchandran /** @brief Method to initiate the offload of dump 7962337a92SDhruvaraj Subhashchandran * @param[in] uri - URI to offload dump. 8062337a92SDhruvaraj Subhashchandran */ 812f8e276cSDhruvaraj Subhashchandran void initiateOffload(std::string uri) override; 8262337a92SDhruvaraj Subhashchandran 8362337a92SDhruvaraj Subhashchandran /** @brief Method to update an existing dump entry 8462337a92SDhruvaraj Subhashchandran * @param[in] timeStamp - Dump creation timestamp 8562337a92SDhruvaraj Subhashchandran * @param[in] dumpSize - Dump size in bytes. 8662337a92SDhruvaraj Subhashchandran * @param[in] sourceId - The id of dump in the origin. 8762337a92SDhruvaraj Subhashchandran */ update(uint64_t timeStamp,uint64_t dumpSize,uint32_t sourceId)8862337a92SDhruvaraj Subhashchandran void update(uint64_t timeStamp, uint64_t dumpSize, uint32_t sourceId) 8962337a92SDhruvaraj Subhashchandran { 9062337a92SDhruvaraj Subhashchandran sourceDumpId(sourceId); 9162337a92SDhruvaraj Subhashchandran elapsed(timeStamp); 9262337a92SDhruvaraj Subhashchandran size(dumpSize); 9362337a92SDhruvaraj Subhashchandran // TODO: Handled dump failure case with 9462337a92SDhruvaraj Subhashchandran // #bm-openbmc/2808 9562337a92SDhruvaraj Subhashchandran status(OperationStatus::Completed); 9662337a92SDhruvaraj Subhashchandran completedTime(timeStamp); 9762337a92SDhruvaraj Subhashchandran } 984c63ce5eSDhruvaraj Subhashchandran 994c63ce5eSDhruvaraj Subhashchandran /** 1004c63ce5eSDhruvaraj Subhashchandran * @brief Delete resource dump in host memory and the entry dbus object 1014c63ce5eSDhruvaraj Subhashchandran */ 1024c63ce5eSDhruvaraj Subhashchandran void delete_() override; 10362337a92SDhruvaraj Subhashchandran }; 10462337a92SDhruvaraj Subhashchandran 10562337a92SDhruvaraj Subhashchandran } // namespace resource 10662337a92SDhruvaraj Subhashchandran } // namespace dump 107341d683dSDhruvaraj Subhashchandran } // namespace openpower 108