vpnor: add API to get partition entry by name

Change-Id: I1f86c646c6629a6a42788821e469d36f55c92264
Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
diff --git a/pnor_partition_table.cpp b/pnor_partition_table.cpp
index 1168d2d..36f0765 100644
--- a/pnor_partition_table.cpp
+++ b/pnor_partition_table.cpp
@@ -1,6 +1,8 @@
 #include "pnor_partition_table.hpp"
 #include "common.h"
 #include "config.h"
+#include "xyz/openbmc_project/Common/error.hpp"
+#include <phosphor-logging/elog-errors.hpp>
 #include <syslog.h>
 #include <endian.h>
 #include <regex>
@@ -12,6 +14,9 @@
 namespace virtual_pnor
 {
 
+using namespace phosphor::logging;
+using namespace sdbusplus::xyz::openbmc_project::Common::Error;
+
 namespace partition
 {
 
@@ -192,6 +197,24 @@
     return p;
 }
 
+const pnor_partition& Table::partition(const std::string& name) const
+{
+    const decltype(auto) table = getNativeTable();
+
+    for (decltype(numParts) i{}; i < numParts; ++i)
+    {
+        if (name == table.partitions[i].data.name)
+        {
+            return table.partitions[i];
+        }
+    }
+
+    MSG_ERR("Partition %s not found", name.c_str());
+    elog<InternalFailure>();
+    static pnor_partition p{};
+    return p;
+}
+
 } // namespace partition
 
 PartitionTable endianFixup(const PartitionTable& in)