Add support for include hidden & informational PELs

Changes:
    - Added new optional parameter to include hidden PELs.

Tested:
    - Created a unit testcase and verified functions with
      new optional parameter on BMC environment.

Change-Id: Ie4b402614bb6b8725cc59630927b5023eaa69292
Signed-off-by: Sridevi Ramesh <sridevra@in.ibm.com>
diff --git a/lib/pel_utils.py b/lib/pel_utils.py
index cf7b39b..07e6d96 100644
--- a/lib/pel_utils.py
+++ b/lib/pel_utils.py
@@ -65,12 +65,24 @@
     return out_buf
 
 
-def get_pel_data_from_bmc():
+def get_pel_data_from_bmc(include_hidden_pels=False,
+                          include_informational_pels=False):
     r"""
     Returns PEL data from BMC else throws exception.
+
+    Description of arguments:
+    include_hidden_pels           True/False (default: False).
+                                  Set True to get hidden PELs else False.
+    include_informational_pels    True/False (default: False).
+                                  Set True to get informational PELs else False.
     """
     try:
-        pel_data = peltool(" -l")
+        pel_cmd = " -l"
+        if include_hidden_pels:
+            pel_cmd = pel_cmd + " -h"
+        if include_informational_pels:
+            pel_cmd = pel_cmd + " -f"
+        pel_data = peltool(pel_cmd)
         if not pel_data:
             print("No PEL data present in BMC ...")
     except Exception as e:
@@ -78,20 +90,22 @@
     return pel_data
 
 
-def fetch_all_pel_ids_for_src(src_id, severity):
+def fetch_all_pel_ids_for_src(src_id, severity, include_hidden_pels=False):
     r"""
     Fetch all PEL IDs for the input SRC ID based on the severity type
     in the list format.
 
     Description of arguments:
-    src_id      SRC ID (e.g. BC20E504).
-    severity    PEL severity (e.g. "Predictive Error"
-                                   "Recovered Error").
+    src_id                SRC ID (e.g. BCXXYYYY).
+    severity              PEL severity (e.g. "Predictive Error"
+                                             "Recovered Error").
+    include_hidden_pels   True/False (default: False).
+                          Set True to get hidden PELs else False.
     """
 
     try:
         src_pel_ids = []
-        pel_data = get_pel_data_from_bmc()
+        pel_data = get_pel_data_from_bmc(include_hidden_pels)
         pel_id_list = pel_data.keys()
         for pel_id in pel_id_list:
             # Check if required SRC ID with severity is present
@@ -167,13 +181,16 @@
     return True
 
 
-def fetch_all_src():
+def fetch_all_src(include_hidden_pels=False):
     r"""
     Fetch all SRC IDs from peltool in the list format.
+
+    include_hidden_pels       True/False (default: False).
+                              Set True to get hidden PELs else False.
     """
     try:
         src_id = []
-        pel_data = get_pel_data_from_bmc()
+        pel_data = get_pel_data_from_bmc(include_hidden_pels)
         if pel_data:
             pel_id_list = pel_data.keys()
             for pel_id in pel_id_list:
@@ -184,7 +201,7 @@
     return src_id
 
 
-def check_for_unexpected_src(unexpected_src_list=[]):
+def check_for_unexpected_src(unexpected_src_list=[], include_hidden_pels=False):
     r"""
     From the given unexpected SRC list, check if any unexpected SRC created
     on the BMC. Returns 0 if no SRC found else throws exception.
@@ -192,12 +209,15 @@
     Description of arguments:
     unexpected_src_list       Give unexpected SRCs in the list format.
                               e.g.: ["BBXXYYYY", "AAXXYYYY"].
+
+    include_hidden_pels       True/False (default: False).
+                              Set True to get hidden PELs else False.
     """
     try:
         unexpected_src_count = 0
         if not unexpected_src_list:
             print("Unexpected SRC list is empty.")
-        src_data = fetch_all_src()
+        src_data = fetch_all_src(include_hidden_pels)
         for src in unexpected_src_list:
             if src in src_data:
                 print("Found an unexpected SRC : " + src)