blob: e57be98ca2064863c2a7a15f5caa1aca0e57b78a [file] [log] [blame]
Matt Spinler4e8078c2019-07-09 13:22:32 -05001#pragma once
2
3#include "elog_entry.hpp"
4#include "log_manager.hpp"
5
6namespace openpower
7{
8namespace pels
9{
10
11using namespace phosphor::logging;
12
13/**
14 * @brief PEL manager object
15 */
16class Manager
17{
18 public:
19 Manager() = delete;
20 ~Manager() = default;
21 Manager(const Manager&) = default;
22 Manager& operator=(const Manager&) = default;
23 Manager(Manager&&) = default;
24 Manager& operator=(Manager&&) = default;
25
26 /**
27 * @brief constructor
28 *
29 * @param[in] logManager - internal::Manager object
30 */
31 explicit Manager(internal::Manager& logManager) : _logManager(logManager)
32 {
33 }
34
35 /**
36 * @brief Creates a PEL based on the OpenBMC event log contents. If
37 * a PEL was passed in via the RAWPEL specifier in the
38 * additionalData parameter, use that instead.
39 *
40 * @param[in] message - the event log message property
41 * @param[in] obmcLogID - the corresponding OpenBMC event log id
42 * @param[in] timestamp - the Timestamp property
43 * @param[in] severity - the event log severity
44 * @param[in] additionalData - the AdditionalData property
45 * @param[in] associations - the Associations property
46 */
47 void create(const std::string& message, uint32_t obmcLogID,
48 uint64_t timestamp, Entry::Level severity,
49 const std::vector<std::string>& additionalData,
50 const std::vector<std::string>& associations);
51
52 /**
53 * @brief Erase a PEL based on its OpenBMC event log ID
54 *
55 * @param[in] obmcLogID - the corresponding OpenBMC event log id
56 */
57 void erase(uint32_t obmcLogID);
58
59 /** @brief Says if an OpenBMC event log may not be manually deleted at this
60 * time because its corresponding PEL cannot be.
61 *
62 * There are PEL retention policies that can prohibit the manual deletion
63 * of PELs (and therefore OpenBMC event logs).
64 *
65 * @param[in] obmcLogID - the OpenBMC event log ID
66 * @return bool - true if prohibited
67 */
68 bool isDeleteProhibited(uint32_t obmcLogID);
69
70 private:
71 /**
72 * @brief Adds a received raw PEL to the PEL repository
73 *
74 * @param[in] rawPelPath - The path to the file that contains the
75 * raw PEL.
76 * @param[in] obmcLogID - the corresponding OpenBMC event log id
77 */
78 void addRawPEL(const std::string& rawPelPath, uint32_t obmcLogID);
79
80 /**
81 * @brief Creates a PEL based on the OpenBMC event log contents.
82 *
83 * @param[in] message - The event log message property
84 * @param[in] obmcLogID - the corresponding OpenBMC event log id
85 * @param[in] timestamp - The timestamp property
86 * @param[in] severity - The event log severity
87 * @param[in] additionalData - The AdditionalData property
88 * @param[in] associations - The associations property
89 */
90 void createPEL(const std::string& message, uint32_t obmcLogID,
91 uint64_t timestamp, Entry::Level severity,
92 const std::vector<std::string>& additionalData,
93 const std::vector<std::string>& associations);
94
95 /**
96 * @brief Reference to phosphor-logging's Manager class
97 */
98 internal::Manager& _logManager;
99};
100
101} // namespace pels
102} // namespace openpower