1 #pragma once 2 3 #include <sdbusplus/bus.hpp> 4 #include "xyz/openbmc_project/Software/Version/server.hpp" 5 #include "xyz/openbmc_project/Object/Delete/server.hpp" 6 #include "xyz/openbmc_project/Common/FilePath/server.hpp" 7 8 namespace openpower 9 { 10 namespace software 11 { 12 namespace updater 13 { 14 15 class ItemUpdater; 16 17 using VersionInherit = sdbusplus::server::object::object< 18 sdbusplus::xyz::openbmc_project::Software::server::Version, 19 sdbusplus::xyz::openbmc_project::Object::server::Delete, 20 sdbusplus::xyz::openbmc_project::Common::server::FilePath>; 21 22 /** @class Version 23 * @brief OpenBMC version software management implementation. 24 * @details A concrete implementation for xyz.openbmc_project.Software.Version 25 * DBus API. 26 */ 27 class Version : public VersionInherit 28 { 29 public: 30 /** @brief Constructs Version Software Manager. 31 * 32 * @param[in] bus - The Dbus bus object 33 * @param[in] objPath - The Dbus object path 34 * @param[in] versionId - The version identifier 35 * @param[in] versionPurpose - The version purpose 36 * @param[in] filePath - The image filesystem path 37 * @param[in] parent - The version's parent 38 */ 39 Version(sdbusplus::bus::bus& bus, 40 const std::string& objPath, 41 const std::string& versionId, 42 VersionPurpose versionPurpose, 43 const std::string& filePath, 44 ItemUpdater& parent) : VersionInherit( 45 bus, (objPath).c_str(), true), 46 parent(parent) 47 { 48 // Set properties. 49 purpose(versionPurpose); 50 version(versionId); 51 path(filePath); 52 53 // Emit deferred signal. 54 emit_object_added(); 55 } 56 57 /** 58 * @brief Read the manifest file to get the value of the key. 59 * 60 * @param[in] filePath - The path to file which contains the value 61 * of keys. 62 * @param[in] keys - A map of keys with empty values. 63 * 64 * @return The map of keys with filled values. 65 **/ 66 static std::map<std::string, std::string> getValue( 67 const std::string& filePath, 68 std::map<std::string, std::string> keys); 69 70 /** 71 * @brief Get the Version id. 72 * 73 * @param[in] version - The image version. 74 * 75 * @return The id. 76 */ 77 static std::string getId(const std::string& version); 78 79 /** @brief Deletes the d-bus object and removes image. 80 * 81 */ 82 void delete_() override; 83 84 private: 85 ItemUpdater& parent; 86 87 }; 88 89 } // namespace updater 90 } // namespace software 91 } // namespace openpower 92