PEL: Make action flags optional in the registry

A future commit will fill in the field if it isn't
present.

Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I67371433162ce2198a362796d274695a1bd6a6dc
diff --git a/extensions/openpower-pels/registry.cpp b/extensions/openpower-pels/registry.cpp
index f0efb3e..dc5a71a 100644
--- a/extensions/openpower-pels/registry.cpp
+++ b/extensions/openpower-pels/registry.cpp
@@ -291,7 +291,11 @@
             Entry entry;
             entry.name = (*e)["Name"];
             entry.subsystem = helper::getSubsystem((*e)["Subsystem"]);
-            entry.actionFlags = helper::getActionFlags((*e)["ActionFlags"]);
+
+            if (e->find("ActionFlags") != e->end())
+            {
+                entry.actionFlags = helper::getActionFlags((*e)["ActionFlags"]);
+            }
 
             if (e->find("MfgActionFlags") != e->end())
             {
diff --git a/extensions/openpower-pels/registry.hpp b/extensions/openpower-pels/registry.hpp
index c55c624..d75c30a 100644
--- a/extensions/openpower-pels/registry.hpp
+++ b/extensions/openpower-pels/registry.hpp
@@ -99,7 +99,7 @@
     /**
      * @brief The PEL action flags field.
      */
-    uint16_t actionFlags;
+    std::optional<uint16_t> actionFlags;
 
     /**
      * @brief  The optional action flags to use instead when in manufacturing
diff --git a/extensions/openpower-pels/user_header.cpp b/extensions/openpower-pels/user_header.cpp
index 6dfbc09..f4337f3 100644
--- a/extensions/openpower-pels/user_header.cpp
+++ b/extensions/openpower-pels/user_header.cpp
@@ -56,7 +56,7 @@
     _problemDomain = 0;
     _problemVector = 0;
 
-    _actionFlags = entry.actionFlags;
+    _actionFlags = entry.actionFlags.value_or(0);
 
     _reserved4Byte2 = 0;
 
diff --git a/test/openpower-pels/registry_test.cpp b/test/openpower-pels/registry_test.cpp
index a16370f..7105c82 100644
--- a/test/openpower-pels/registry_test.cpp
+++ b/test/openpower-pels/registry_test.cpp
@@ -16,7 +16,6 @@
         {
             "Name": "xyz.openbmc_project.Power.Fault",
             "Subsystem": "power_supply",
-            "ActionFlags": ["service_action", "report"],
 
             "SRC":
             {
@@ -105,7 +104,7 @@
     EXPECT_EQ(entry->subsystem, 0x62);
     EXPECT_EQ(*(entry->severity), 0x40);
     EXPECT_EQ(*(entry->mfgSeverity), 0x00);
-    EXPECT_EQ(entry->actionFlags, 0xA800);
+    EXPECT_EQ(*(entry->actionFlags), 0xA800);
     EXPECT_EQ(*(entry->mfgActionFlags), 0x4000);
     EXPECT_EQ(entry->componentID, 0x2300);
     EXPECT_FALSE(entry->eventType);
@@ -148,7 +147,7 @@
     EXPECT_FALSE(entry->severity);
     EXPECT_FALSE(entry->mfgSeverity);
     EXPECT_FALSE(entry->mfgActionFlags);
-    EXPECT_EQ(entry->actionFlags, 0xA000);
+    EXPECT_FALSE(entry->actionFlags);
     EXPECT_EQ(entry->componentID, 0x2000);
     EXPECT_FALSE(entry->eventType);
     EXPECT_FALSE(entry->eventScope);