blob: b367e8b88d78ec7c12535991062d1e0bae0ba4be [file] [log] [blame]
George Keishing4346a412016-07-19 11:26:49 -05001#!/usr/bin/python
Gunnar Millsa812e0f2016-09-29 20:30:03 -05002r"""
George Keishing4346a412016-07-19 11:26:49 -05003#############################################################
4# @file openbmc_ffdc_list.py
George Keishing4346a412016-07-19 11:26:49 -05005#
6# @brief List for FFDC ( First failure data capture )
7# commands and files to be collected as a part
8# of the test case failure.
9#############################################################
Gunnar Millsa812e0f2016-09-29 20:30:03 -050010"""
George Keishing4346a412016-07-19 11:26:49 -050011
Gunnar Millsa812e0f2016-09-29 20:30:03 -050012# -------------------
George Keishing4346a412016-07-19 11:26:49 -050013# FFDC default list
Gunnar Millsa812e0f2016-09-29 20:30:03 -050014# -------------------
George Keishing4346a412016-07-19 11:26:49 -050015
Gunnar Millsa812e0f2016-09-29 20:30:03 -050016# -----------------------------------------------------------------
17# Dict Name { Index string : { Key String : Comand string} }
18# -----------------------------------------------------------------
George Keishing69e6f712016-09-12 06:30:09 -050019# Add cmd's needed to be part of the ffdc report manifest file
20FFDC_BMC_CMD = {
Gunnar Millsa812e0f2016-09-29 20:30:03 -050021 'DRIVER INFO':
22 {
23 # String Name Command
24 'Build Info': 'cat /etc/version',
25 'FW Level': 'cat /etc/os-release',
26 },
27 'BMC DATA':
28 {
29 'BMC OS': 'uname -a',
30 'BMC Uptime': 'uptime',
31 'BMC Proc Info': 'cat /proc/cpuinfo',
32 'BMC Mem Info': 'cat /proc/meminfo',
33 'BMC File System Disk Space Usage': 'df -hT',
34 },
35 'APPLICATION DATA':
36 {
37 'BMC state': '/usr/sbin/obmcutil state',
38 },
39}
George Keishing4346a412016-07-19 11:26:49 -050040
George Keishing69e6f712016-09-12 06:30:09 -050041# Add file name and correcponding command needed for BMC
42FFDC_BMC_FILE = {
Gunnar Millsa812e0f2016-09-29 20:30:03 -050043 'BMC FILES':
44 {
45 # File Name Command
46 'BMC_proc_list': 'top -n 1 -b',
47 'BMC_journalctl.log': 'journalctl --no-pager',
48 'BMC_dmesg': 'dmesg',
49 },
50}
51
52# Add file name and correcponding Get Request
53FFDC_GET_REQUEST = {
54 'GET REQUESTS':
55 {
56 # File Name Command
57 'BMC_sensor_list': '/org/openbmc/sensors/enumerate',
58 'BMC_inventory': '/org/openbmc/inventory/system/enumerate',
59 'BMC_led': '/org/openbmc/control/led/enumerate',
60 'BMC_record_log': '/org/openbmc/records/events/enumerate',
61 },
62}
63
George Keishing69e6f712016-09-12 06:30:09 -050064
65# Define your keywords in method/utils and call here
66FFDC_METHOD_CALL = {
Gunnar Millsa812e0f2016-09-29 20:30:03 -050067 'BMC LOGS':
68 {
69 # Description Keyword name
70 'FFDC Generic Report': 'BMC FFDC Manifest',
71 'BMC Specific Files': 'BMC FFDC Files',
72 'Get Request FFDC': 'BMC FFDC Get Requests',
73 },
74}
George Keishing4346a412016-07-19 11:26:49 -050075
Gunnar Millsa812e0f2016-09-29 20:30:03 -050076# -----------------------------------------------------------------
George Keishing4346a412016-07-19 11:26:49 -050077
78
79# base class for FFDC default list
80class openbmc_ffdc_list():
81
Gunnar Millsa812e0f2016-09-29 20:30:03 -050082 def get_ffdc_bmc_cmd(self, i_type):
83 r"""
84 ########################################################################
85 # @brief This method returns the list from the dictionary for cmds
86 # @param i_type: @type string: string index lookup
87 # @return List of key pair from the dictionary
88 ########################################################################
89 """
George Keishing69e6f712016-09-12 06:30:09 -050090 return FFDC_BMC_CMD[i_type].items()
George Keishing4346a412016-07-19 11:26:49 -050091
Gunnar Millsa812e0f2016-09-29 20:30:03 -050092 def get_ffdc_bmc_file(self, i_type):
93 r"""
94 ########################################################################
95 # @brief This method returns the list from the dictionary for scp
96 # @param i_type: @type string: string index lookup
97 # @return List of key pair from the dictionary
98 ########################################################################
99 """
George Keishing69e6f712016-09-12 06:30:09 -0500100 return FFDC_BMC_FILE[i_type].items()
George Keishing4346a412016-07-19 11:26:49 -0500101
Gunnar Millsa812e0f2016-09-29 20:30:03 -0500102 def get_ffdc_get_request(self, i_type):
103 r"""
104 ########################################################################
105 # @brief This method returns the list from the dictionary for scp
106 # @param i_type: @type string: string index lookup
107 # @return List of key pair from the dictionary
108 ########################################################################
109 """
110 return FFDC_GET_REQUEST[i_type].items()
111
George Keishing69e6f712016-09-12 06:30:09 -0500112 def get_ffdc_cmd_index(self):
Gunnar Millsa812e0f2016-09-29 20:30:03 -0500113 r"""
114 ########################################################################
115 # @brief This method returns the list index from dictionary
116 # @return List of index to the dictionary
117 ########################################################################
118 """
George Keishing69e6f712016-09-12 06:30:09 -0500119 return FFDC_BMC_CMD.keys()
120
Gunnar Millsa812e0f2016-09-29 20:30:03 -0500121 def get_ffdc_get_request_index(self):
122 r"""
123 ########################################################################
124 # @brief This method returns the list index from dictionary
125 # @return List of index to the dictionary
126 ########################################################################
127 """
128 return FFDC_GET_REQUEST.keys()
129
George Keishing69e6f712016-09-12 06:30:09 -0500130 def get_ffdc_file_index(self):
Gunnar Millsa812e0f2016-09-29 20:30:03 -0500131 r"""
132 ########################################################################
133 # @brief This method returns the list index from dictionary
134 # @return List of index to the dictionary
135 ########################################################################
136 """
George Keishing69e6f712016-09-12 06:30:09 -0500137 return FFDC_BMC_FILE.keys()
138
George Keishing69e6f712016-09-12 06:30:09 -0500139 def get_ffdc_method_index(self):
Gunnar Millsa812e0f2016-09-29 20:30:03 -0500140 r"""
141 ########################################################################
142 # @brief This method returns the key pair from the dictionary
143 # @return Index of the method dictionary
144 ########################################################################
145 """
George Keishing69e6f712016-09-12 06:30:09 -0500146 return FFDC_METHOD_CALL.keys()
147
Gunnar Millsa812e0f2016-09-29 20:30:03 -0500148 def get_ffdc_method_call(self, i_type):
149 r"""
150 ########################################################################
151 # @brief This method returns the key pair from the dictionary
152 # @return List of key pair keywords
153 ########################################################################
154 """
George Keishing69e6f712016-09-12 06:30:09 -0500155 return FFDC_METHOD_CALL[i_type].items()
George Keishing4346a412016-07-19 11:26:49 -0500156
George Keishing4346a412016-07-19 11:26:49 -0500157 def get_strip_string(self, i_str):
Gunnar Millsa812e0f2016-09-29 20:30:03 -0500158 r"""
159 ########################################################################
160 # @brief Returns the stripped strings
161 # @param i_str: @type string: string name
162 # @return Remove all special chars and return the string
163 ########################################################################
164 """
George Keishing4346a412016-07-19 11:26:49 -0500165 return ''.join(e for e in i_str if e.isalnum())