mmc: reset: Delete all BMC error logs

During a bios factory reset, the partition where hostboot stores their
error logs is cleared. Need to clear the BMC error logs too to avoid
discrepancies.

Tested: Verified the /var/lib/phosphor-logging/extensions/pels/logs/
directory was cleared after a bios factory reset except for the
'archive' subdirectory.

Change-Id: I273d7953fda053823cea93dc57b751de74ddef43
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
diff --git a/mmc/item_updater_mmc.cpp b/mmc/item_updater_mmc.cpp
index 1a5b142..9541b08 100644
--- a/mmc/item_updater_mmc.cpp
+++ b/mmc/item_updater_mmc.cpp
@@ -70,6 +70,9 @@
         }
     }
 
+    // Delete all BMC error logs to avoid discrepancies with the host error logs
+    utils::deleteAllErrorLogs(bus);
+
     // Remove files related to the Hardware Management Console / BMC web app
 
     utils::clearHMCManaged(bus);
diff --git a/utils.cpp b/utils.cpp
index a994b33..a1ae101 100644
--- a/utils.cpp
+++ b/utils.cpp
@@ -144,4 +144,24 @@
     }
 }
 
+void deleteAllErrorLogs(sdbusplus::bus::bus& bus)
+{
+    constexpr auto loggingPath = "/xyz/openbmc_project/logging";
+    constexpr auto deleteAllIntf = "xyz.openbmc_project.Collection.DeleteAll";
+
+    auto service = getService(bus, loggingPath, deleteAllIntf);
+    auto method = bus.new_method_call(service.c_str(), loggingPath,
+                                      deleteAllIntf, "DeleteAll");
+
+    try
+    {
+        bus.call_noreply(method);
+    }
+    catch (const sdbusplus::exception::exception& e)
+    {
+        log<level::ERR>("Error deleting all error logs",
+                        entry("ERROR=%s", e.what()));
+    }
+}
+
 } // namespace utils
diff --git a/utils.hpp b/utils.hpp
index 8ff2370..7588039 100644
--- a/utils.hpp
+++ b/utils.hpp
@@ -52,6 +52,12 @@
  */
 void clearHMCManaged(sdbusplus::bus::bus& bus);
 
+/** @brief DeleteAll error logs
+ *
+ * @param[in] bus - The D-Bus bus object.
+ */
+void deleteAllErrorLogs(sdbusplus::bus::bus& bus);
+
 } // namespace utils
 
 #endif // OPENSSL_VERSION_NUMBER < 0x10100000L