diff options
Diffstat (limited to 'extensions/openpower-pels/manager.hpp')
-rw-r--r-- | extensions/openpower-pels/manager.hpp | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/extensions/openpower-pels/manager.hpp b/extensions/openpower-pels/manager.hpp new file mode 100644 index 0000000..e57be98 --- /dev/null +++ b/extensions/openpower-pels/manager.hpp @@ -0,0 +1,102 @@ +#pragma once + +#include "elog_entry.hpp" +#include "log_manager.hpp" + +namespace openpower +{ +namespace pels +{ + +using namespace phosphor::logging; + +/** + * @brief PEL manager object + */ +class Manager +{ + public: + Manager() = delete; + ~Manager() = default; + Manager(const Manager&) = default; + Manager& operator=(const Manager&) = default; + Manager(Manager&&) = default; + Manager& operator=(Manager&&) = default; + + /** + * @brief constructor + * + * @param[in] logManager - internal::Manager object + */ + explicit Manager(internal::Manager& logManager) : _logManager(logManager) + { + } + + /** + * @brief Creates a PEL based on the OpenBMC event log contents. If + * a PEL was passed in via the RAWPEL specifier in the + * additionalData parameter, use that instead. + * + * @param[in] message - the event log message property + * @param[in] obmcLogID - the corresponding OpenBMC event log id + * @param[in] timestamp - the Timestamp property + * @param[in] severity - the event log severity + * @param[in] additionalData - the AdditionalData property + * @param[in] associations - the Associations property + */ + void create(const std::string& message, uint32_t obmcLogID, + uint64_t timestamp, Entry::Level severity, + const std::vector<std::string>& additionalData, + const std::vector<std::string>& associations); + + /** + * @brief Erase a PEL based on its OpenBMC event log ID + * + * @param[in] obmcLogID - the corresponding OpenBMC event log id + */ + void erase(uint32_t obmcLogID); + + /** @brief Says if an OpenBMC event log may not be manually deleted at this + * time because its corresponding PEL cannot be. + * + * There are PEL retention policies that can prohibit the manual deletion + * of PELs (and therefore OpenBMC event logs). + * + * @param[in] obmcLogID - the OpenBMC event log ID + * @return bool - true if prohibited + */ + bool isDeleteProhibited(uint32_t obmcLogID); + + private: + /** + * @brief Adds a received raw PEL to the PEL repository + * + * @param[in] rawPelPath - The path to the file that contains the + * raw PEL. + * @param[in] obmcLogID - the corresponding OpenBMC event log id + */ + void addRawPEL(const std::string& rawPelPath, uint32_t obmcLogID); + + /** + * @brief Creates a PEL based on the OpenBMC event log contents. + * + * @param[in] message - The event log message property + * @param[in] obmcLogID - the corresponding OpenBMC event log id + * @param[in] timestamp - The timestamp property + * @param[in] severity - The event log severity + * @param[in] additionalData - The AdditionalData property + * @param[in] associations - The associations property + */ + void createPEL(const std::string& message, uint32_t obmcLogID, + uint64_t timestamp, Entry::Level severity, + const std::vector<std::string>& additionalData, + const std::vector<std::string>& associations); + + /** + * @brief Reference to phosphor-logging's Manager class + */ + internal::Manager& _logManager; +}; + +} // namespace pels +} // namespace openpower |