blob: 783ec94f6ac00314183b5197758970e604860d95 [file] [log] [blame]
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -06001#pragma once
2
3#include "com/ibm/Dump/Entry/Resource/server.hpp"
4#include "dump_entry.hpp"
5
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -06006#include <sdbusplus/bus.hpp>
7#include <sdbusplus/server/object.hpp>
8
Jayanth Othayoth0af74a52021-04-08 03:55:21 -05009#include <chrono>
10
Patrick Williams4bc1c2b2021-05-10 14:22:18 -050011#ifndef SDBUSPP_NEW_CAMELCASE
12#define vspString vSPString
13#endif
14
Dhruvaraj Subhashchandran341d6832021-01-15 06:28:04 -060015namespace openpower
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060016{
17namespace dump
18{
19namespace resource
20{
21template <typename T>
22using ServerObject = typename sdbusplus::server::object::object<T>;
23
24using EntryIfaces = sdbusplus::server::object::object<
25 sdbusplus::com::ibm::Dump::Entry::server::Resource>;
26
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060027class Manager;
28
29/** @class Entry
30 * @brief Resource Dump Entry implementation.
31 * @details An extension to Dump::Entry class and
32 * A concrete implementation for the
33 * com::ibm::Dump::Entry::Resource DBus API
34 */
35class Entry : virtual public EntryIfaces, virtual public phosphor::dump::Entry
36{
37 public:
38 Entry() = delete;
39 Entry(const Entry&) = delete;
40 Entry& operator=(const Entry&) = delete;
41 Entry(Entry&&) = delete;
42 Entry& operator=(Entry&&) = delete;
43 ~Entry() = default;
44
45 /** @brief Constructor for the resource dump Entry Object
46 * @param[in] bus - Bus to attach to.
47 * @param[in] objPath - Object path to attach to
48 * @param[in] dumpId - Dump id.
49 * @param[in] timeStamp - Dump creation timestamp
50 * since the epoch.
51 * @param[in] dumpSize - Dump size in bytes.
52 * @param[in] sourceId - DumpId provided by the source.
Patrick Williams4bc1c2b2021-05-10 14:22:18 -050053 * @param[in] vspStr- Input to host to generate the resource dump.
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060054 * @param[in] pwd - Password needed by host to validate the request.
55 * @param[in] status - status of the dump.
56 * @param[in] parent - The dump entry's parent.
57 */
58 Entry(sdbusplus::bus::bus& bus, const std::string& objPath, uint32_t dumpId,
59 uint64_t timeStamp, uint64_t dumpSize, const uint32_t sourceId,
Patrick Williams4bc1c2b2021-05-10 14:22:18 -050060 std::string vspStr, std::string pwd,
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060061 phosphor::dump::OperationStatus status,
62 phosphor::dump::Manager& parent) :
63 EntryIfaces(bus, objPath.c_str(), true),
64 phosphor::dump::Entry(bus, objPath.c_str(), dumpId, timeStamp, dumpSize,
65 status, parent)
66 {
67 sourceDumpId(sourceId);
Patrick Williams4bc1c2b2021-05-10 14:22:18 -050068 vspString(vspStr);
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060069 password(pwd);
Dhruvaraj Subhashchandran2f8e2762021-02-11 07:22:35 -060070 // Emit deferred signal.
71 this->openpower::dump::resource::EntryIfaces::emit_object_added();
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060072 };
73
74 /** @brief Method to initiate the offload of dump
75 * @param[in] uri - URI to offload dump.
76 */
Dhruvaraj Subhashchandran2f8e2762021-02-11 07:22:35 -060077 void initiateOffload(std::string uri) override;
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060078
79 /** @brief Method to update an existing dump entry
80 * @param[in] timeStamp - Dump creation timestamp
81 * @param[in] dumpSize - Dump size in bytes.
82 * @param[in] sourceId - The id of dump in the origin.
83 */
84 void update(uint64_t timeStamp, uint64_t dumpSize, uint32_t sourceId)
85 {
86 sourceDumpId(sourceId);
87 elapsed(timeStamp);
88 size(dumpSize);
89 // TODO: Handled dump failure case with
90 // #bm-openbmc/2808
91 status(OperationStatus::Completed);
92 completedTime(timeStamp);
93 }
Dhruvaraj Subhashchandran4c63ce52020-12-18 02:07:22 -060094
95 /**
96 * @brief Delete resource dump in host memory and the entry dbus object
97 */
98 void delete_() override;
Dhruvaraj Subhashchandran62337a92020-11-22 21:24:30 -060099};
100
101} // namespace resource
102} // namespace dump
Dhruvaraj Subhashchandran341d6832021-01-15 06:28:04 -0600103} // namespace openpower