Changed to retrieve lists of generated files and return them.
It is important for FFDC functions to return a complete list of
generated files rather than leaving the caller to guess what files were
created or have to go searching for them.
Change-Id: Ida8d0de1adb3f486729057d42eded3e1204963a9
Signed-off-by: Michael Walsh <micwalsh@us.ibm.com>
diff --git a/lib/openbmc_ffdc.py b/lib/openbmc_ffdc.py
index df27c86..511ac6b 100644
--- a/lib/openbmc_ffdc.py
+++ b/lib/openbmc_ffdc.py
@@ -6,9 +6,11 @@
import os
+import gen_print as gp
import gen_robot_print as grp
import gen_valid as gv
import gen_robot_keyword as grk
+import state as st
from robot.libraries.BuiltIn import BuiltIn
@@ -38,34 +40,35 @@
for possible choices.
"""
+ ffdc_file_list = []
+
# Check if Ping and SSH connection is alive
OPENBMC_HOST = BuiltIn().get_variable_value("${OPENBMC_HOST}")
- status, status_ping = grk.run_key("Ping Host " + OPENBMC_HOST)
- grp.rprint_var(status_ping)
- if status_ping:
- status_ssh = \
- BuiltIn().run_keyword_and_return_status("Open Connection And" +
- " Log In")
- grp.rprint_var(status_ssh)
- if not status_ssh:
- grp.rprint_error("BMC is not communicating. \
- Aborting FFDC collection.\n")
- BuiltIn().run_keyword_and_return_status("Close All Connections")
- return
- grp.rprint_timen("Collecting FFDC.")
+ state = st.get_state(req_states=['ping', 'uptime'])
+ gp.qprint_var(state)
+ if not int(state['ping']):
+ gp.print_error("BMC is not ping-able. Terminating FFDC collection.\n")
+ return ffdc_file_list
+
+ if state['uptime'] == "":
+ gp.print_error("BMC is not communicating. Terminating FFDC" +
+ " collection.\n")
+ return ffdc_file_list
+
+ gp.qprint_timen("Collecting FFDC.")
# Get default values for arguments.
ffdc_dir_path, ffdc_prefix = set_ffdc_defaults(ffdc_dir_path, ffdc_prefix)
- grp.rprint_var(ffdc_dir_path)
- grp.rprint_var(ffdc_prefix)
+ gp.qprint_var(ffdc_dir_path)
+ gp.qprint_var(ffdc_prefix)
# LOG_PREFIX is used by subordinate functions.
LOG_PREFIX = ffdc_dir_path + ffdc_prefix
BuiltIn().set_global_variable("${LOG_PREFIX}", LOG_PREFIX)
cmd_buf = ["Create Directory", ffdc_dir_path]
- grp.rpissuing_keyword(cmd_buf)
+ grp.rqpissuing_keyword(cmd_buf)
status, output = BuiltIn().run_keyword_and_ignore_error(*cmd_buf)
if status != "PASS":
error_message = grp.sprint_error_report("Create Directory failed" +
@@ -77,12 +80,18 @@
FFDC_FILE_PATH = ffdc_dir_path + ffdc_prefix + "BMC_general.txt"
BuiltIn().set_global_variable("${FFDC_FILE_PATH}", FFDC_FILE_PATH)
- grk.run_key("Header Message")
+ status, ffdc_file_list = grk.run_key("Header Message")
+ status, ffdc_file_sub_list = \
+ grk.run_key_u("Call FFDC Methods ffdc_function_list=" +
+ ffdc_function_list)
- grk.run_key_u("Call FFDC Methods ffdc_function_list=" +
- ffdc_function_list)
+ # Combine lists, remove duplicates and sort.
+ ffdc_file_list = list(set(ffdc_file_list + ffdc_file_sub_list))
+ ffdc_file_list.sort()
- grp.rprint_timen("Finished collecting FFDC.")
+ gp.qprint_timen("Finished collecting FFDC.")
+
+ return ffdc_file_list
###############################################################################