xref: /openbmc/phosphor-debug-collector/dump-extensions/openpower-dumps/resource_dump_entry.hpp (revision 3b44559f8792611772b9838178e8f8acb127eee8)
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