Add lifetime property for drives interface
This will set the lifetime property when the eStoraged object is
created. This change does not expect the lifetime to change.
Tested:
busctl introspect xyz.openbmc_project.eStoraged.mmcblk0 /xyz/openbmc_project/inventory/storage/mmcblk0
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
org.freedesktop.DBus.Introspectable interface - - -
.Introspect method - s -
org.freedesktop.DBus.Peer interface - - -
.GetMachineId method - s -
.Ping method - - -
org.freedesktop.DBus.Properties interface - - -
.Get method ss v -
.GetAll method s a{sv} -
.Set method ssv - -
.PropertiesChanged signal sa{sv}as - -
xyz.openbmc_project.Inventory.Item.Drive interface - - -
.Capacity property t (top secret) emits-change
.PredictedMediaLifeLeftPercent property y 100 emits-change
xyz.openbmc_project.Inventory.Item.Volume interface - - -
.ChangePassword method ayay - -
.Erase method s - -
.FormatLuks method ays - -
.Lock method - - -
.Unlock method ay - -
Signed-off-by: John Edward Broadbent <jebr@google.com>
Change-Id: Ifbbed7d81c55e3edbe519c2b1048b5d1731fbb0e
diff --git a/include/estoraged.hpp b/include/estoraged.hpp
index aa89bee..c160fb1 100644
--- a/include/estoraged.hpp
+++ b/include/estoraged.hpp
@@ -2,6 +2,7 @@
#include "cryptsetupInterface.hpp"
#include "filesystemInterface.hpp"
+#include "util.hpp"
#include <libcryptsetup.h>
@@ -36,6 +37,8 @@
* @param[in] server - sdbusplus asio object server
* @param[in] devPath - path to device file, e.g. /dev/mmcblk0
* @param[in] luksName - name for the LUKS container
+ * @param[in] size - size of the drive in bytes
+ * @param[in] lifeTime - percent of lifetime remaining for a drive
* @param[in] cryptInterface - (optional) pointer to CryptsetupInterface
* object
* @param[in] fsInterface - (optional) pointer to FilesystemInterface
@@ -43,7 +46,7 @@
*/
EStoraged(sdbusplus::asio::object_server& server,
const std::string& devPath, const std::string& luksName,
- uint64_t size,
+ uint64_t size, uint8_t lifeTime,
std::unique_ptr<CryptsetupInterface> cryptInterface =
std::make_unique<Cryptsetup>(),
std::unique_ptr<FilesystemInterface> fsInterface =
diff --git a/include/pattern.hpp b/include/pattern.hpp
index 4def784..691cb16 100644
--- a/include/pattern.hpp
+++ b/include/pattern.hpp
@@ -30,7 +30,7 @@
*/
void writePattern()
{
- writePattern(util::Util::findSizeOfBlockDevice(devPath));
+ writePattern(util::findSizeOfBlockDevice(devPath));
}
void writePattern(uint64_t driveSize);
@@ -43,7 +43,7 @@
void verifyPattern()
{
- verifyPattern(util::Util::findSizeOfBlockDevice(devPath));
+ verifyPattern(util::findSizeOfBlockDevice(devPath));
}
void verifyPattern(uint64_t driveSize);
};
diff --git a/include/sanitize.hpp b/include/sanitize.hpp
index 4ab73bf..7ec5a4a 100644
--- a/include/sanitize.hpp
+++ b/include/sanitize.hpp
@@ -96,7 +96,7 @@
*/
void doSanitize()
{
- doSanitize(util::Util::findSizeOfBlockDevice(devPath));
+ doSanitize(util::findSizeOfBlockDevice(devPath));
}
private:
diff --git a/include/util.hpp b/include/util.hpp
index 1d706ce..b0f4970 100644
--- a/include/util.hpp
+++ b/include/util.hpp
@@ -1,20 +1,22 @@
#pragma once
-#include <string_view>
+#include <string>
namespace estoraged
{
namespace util
{
-class Util
-{
- public:
- /** @brief finds the size of the linux block device in bytes
- * @param[in] devpath - the name of the linux block device
- * @return size of a block device using the devPath
- */
- static uint64_t findSizeOfBlockDevice(const std::string& devPath);
-};
+/** @brief finds the size of the linux block device in bytes
+ * @param[in] devpath - the name of the linux block device
+ * @return size of a block device using the devPath
+ */
+uint64_t findSizeOfBlockDevice(const std::string& devPath);
+
+/** @brief finds the predicted life left for a eMMC device
+ * @param[in] sysfsPath - The path to the linux sysfs interface
+ * @return the life remaing for the emmc, as a percentage.
+ */
+uint8_t findPredictedMediaLifeLeftPercent(const std::string& sysfsPath);
} // namespace util
diff --git a/include/verifyDriveGeometry.hpp b/include/verifyDriveGeometry.hpp
index ea54998..ee8b3b7 100644
--- a/include/verifyDriveGeometry.hpp
+++ b/include/verifyDriveGeometry.hpp
@@ -25,7 +25,7 @@
*/
void geometryOkay()
{
- geometryOkay(util::Util::findSizeOfBlockDevice(devPath));
+ geometryOkay(util::findSizeOfBlockDevice(devPath));
}
void geometryOkay(uint64_t bytes);
};
diff --git a/include/zero.hpp b/include/zero.hpp
index 00c2b38..562b8ce 100644
--- a/include/zero.hpp
+++ b/include/zero.hpp
@@ -31,7 +31,7 @@
*/
void writeZero()
{
- writeZero(util::Util::findSizeOfBlockDevice(devPath));
+ writeZero(util::findSizeOfBlockDevice(devPath));
}
/** @brief verifies the uncompressible random pattern is on the drive
@@ -45,7 +45,7 @@
*/
void verifyZero()
{
- verifyZero(util::Util::findSizeOfBlockDevice(devPath));
+ verifyZero(util::findSizeOfBlockDevice(devPath));
}
private: