1 #pragma once 2 #include "version.hpp" 3 4 #include <sdbusplus/server.hpp> 5 6 #include <string> 7 8 namespace phosphor 9 { 10 namespace software 11 { 12 namespace manager 13 { 14 15 /** @class Manager 16 * @brief Contains a map of Version dbus objects. 17 * @details The software image manager class that contains the Version dbus 18 * objects and their version ids. 19 */ 20 class Manager 21 { 22 public: 23 /** @brief Constructs Manager Class 24 * 25 * @param[in] bus - The Dbus bus object 26 */ 27 explicit Manager(sdbusplus::bus::bus& bus) : bus(bus){}; 28 29 /** 30 * @brief Verify and untar the tarball. Verify the manifest file. 31 * Create and populate the version and filepath interfaces. 32 * 33 * @param[in] tarballFilePath - Tarball path. 34 * @param[out] result - 0 if successful. 35 */ 36 int processImage(const std::string& tarballFilePath); 37 38 /** 39 * @brief Erase specified entry d-bus object 40 * and deletes the image file. 41 * 42 * @param[in] entryId - unique identifier of the entry 43 */ 44 void erase(std::string entryId); 45 46 private: 47 /** @brief Persistent map of Version dbus objects and their 48 * version id */ 49 std::map<std::string, std::unique_ptr<Version>> versions; 50 51 /** @brief Persistent sdbusplus DBus bus connection. */ 52 sdbusplus::bus::bus& bus; 53 54 /** 55 * @brief Untar the tarball. 56 * 57 * @param[in] tarballFilePath - Tarball path. 58 * @param[in] extractDirPath - Dir path to extract tarball ball to. 59 * @param[out] result - 0 if successful. 60 */ 61 static int unTar(const std::string& tarballFilePath, 62 const std::string& extractDirPath); 63 }; 64 65 } // namespace manager 66 } // namespace software 67 } // namespace phosphor 68