PEL: Support ServiceProviderNotify property

Redfish API needs to find out if the callhome event occurred in a system
and this support is provided by updating the ServiceProviderNotify
property in D-Bus if the callhome flag in PEL is set.

Tested: Manually created informational and unrecoverable errors directly
on D-Bus using busctl call and verified that the ServiceProviderNotify
property set to false for informational error and its set to true for
unrecoverable error.

Signed-off-by: Vijay Lobo <vijaylobo@gmail.com>
Change-Id: Ia7246bf170f3289400a3b3c947ef9e67c06d2c46
diff --git a/extensions/openpower-pels/manager.cpp b/extensions/openpower-pels/manager.cpp
index 1372bf6..cedb787 100644
--- a/extensions/openpower-pels/manager.cpp
+++ b/extensions/openpower-pels/manager.cpp
@@ -93,6 +93,7 @@
     }
 
     setEntryPath(obmcLogID);
+    setServiceProviderNotifyFlag(obmcLogID);
 }
 
 void Manager::addRawPEL(const std::string& rawPelPath, uint32_t obmcLogID)
@@ -679,5 +680,26 @@
     }
 }
 
+void Manager::setServiceProviderNotifyFlag(uint32_t obmcLogID)
+{
+    Repository::LogID id{Repository::LogID::Obmc(obmcLogID)};
+    if (auto attributes = _repo.getPELAttributes(id); attributes)
+    {
+        auto& attr = attributes.value().get();
+        auto entry = _logManager.entries.find(obmcLogID);
+        if (entry != _logManager.entries.end())
+        {
+            if (attr.actionFlags.test(callHomeFlagBit))
+            {
+                entry->second->serviceProviderNotify(true);
+            }
+            else
+            {
+                entry->second->serviceProviderNotify(false);
+            }
+        }
+    }
+}
+
 } // namespace pels
 } // namespace openpower