Revert "black: re-format"
This reverts commit 5731818de0ce446ceaafc7e75ae39da1b69942ae.
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
Change-Id: Ie61cdc8c7f2825b0d9d66be87a6a3a058de2b372
diff --git a/bin/auto_status_file.py b/bin/auto_status_file.py
index c3f2544..d1614f3 100755
--- a/bin/auto_status_file.py
+++ b/bin/auto_status_file.py
@@ -4,101 +4,86 @@
See help text for details.
"""
-import re
-import subprocess
import sys
+import subprocess
+import re
save_dir_path = sys.path.pop(0)
-modules = [
- "gen_arg",
- "gen_print",
- "gen_valid",
- "gen_misc",
- "gen_cmd",
- "var_funcs",
-]
+modules = ['gen_arg', 'gen_print', 'gen_valid', 'gen_misc', 'gen_cmd', 'var_funcs']
for module in modules:
exec("from " + module + " import *")
sys.path.insert(0, save_dir_path)
parser = argparse.ArgumentParser(
- usage="%(prog)s [OPTIONS]",
+ usage='%(prog)s [OPTIONS]',
description="%(prog)s will create a status file path name adhering to the"
- + " following pattern: <status dir path>/<prefix>.yymmdd."
- + "hhmmss.status. It will then run the command string and"
- + " direct its stdout/stderr to the status file and optionally"
- + " to stdout. This dual output streaming will be"
- + ' accomplished using either the "script" or the "tee"'
- + " program. %(prog)s will also set and export environment"
- + ' variable "AUTO_STATUS_FILE_PATH" for the benefit of'
- + " child programs.",
+ + " following pattern: <status dir path>/<prefix>.yymmdd."
+ + "hhmmss.status. It will then run the command string and"
+ + " direct its stdout/stderr to the status file and optionally"
+ + " to stdout. This dual output streaming will be"
+ + " accomplished using either the \"script\" or the \"tee\""
+ + " program. %(prog)s will also set and export environment"
+ + " variable \"AUTO_STATUS_FILE_PATH\" for the benefit of"
+ + " child programs.",
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- prefix_chars="-+",
-)
+ prefix_chars='-+')
parser.add_argument(
- "--status_dir_path",
- default="",
+ '--status_dir_path',
+ default='',
help="The path to the directory where the status file will be created."
- + "%(default)s The default value is obtained from environment"
- + ' variable "${STATUS_DIR_PATH}", if set or from "${HOME}/'
- + 'status/".',
-)
+ + "%(default)s The default value is obtained from environment"
+ + " variable \"${STATUS_DIR_PATH}\", if set or from \"${HOME}/"
+ + "status/\".")
parser.add_argument(
- "--prefix",
- default="",
+ '--prefix',
+ default='',
help="The prefix for the generated file name.%(default)s The default value"
- + " is the command portion (i.e. the first token) of the command"
- + " string.",
-)
+ + " is the command portion (i.e. the first token) of the command"
+ + " string.")
parser.add_argument(
- "--status_file_name",
- default="",
+ '--status_file_name',
+ default='',
help="This allows the user to explicitly specify the status file name. If"
- + " this argument is not used, %(prog)s composes a status file name."
- + ' If this argument is specified, the "--prefix" argument is'
- + " ignored.",
-)
+ + " this argument is not used, %(prog)s composes a status file name."
+ + " If this argument is specified, the \"--prefix\" argument is"
+ + " ignored.")
parser.add_argument(
- "--stdout",
+ '--stdout',
default=1,
type=int,
choices=[1, 0],
help="Indicates that stdout/stderr from the command string execution"
- + " should be written to stdout as well as to the status file.",
-)
+ + " should be written to stdout as well as to the status file.")
parser.add_argument(
- "--tee",
+ '--tee',
default=1,
type=int,
choices=[1, 0],
- help='Indicates that "tee" rather than "script" should be used.',
-)
+ help="Indicates that \"tee\" rather than \"script\" should be used.")
parser.add_argument(
- "--show_url",
+ '--show_url',
default=0,
type=int,
choices=[1, 0],
help="Indicates that the status file path shown should be shown in the"
- + " form of a url. If the output is to be viewed from a browser,"
- + " this may well become a clickable link. Note that the"
- + ' get_file_path_url.py program must be found in the "PATH"'
- + " environment variable for this argument to be effective.",
-)
+ + " form of a url. If the output is to be viewed from a browser,"
+ + " this may well become a clickable link. Note that the"
+ + " get_file_path_url.py program must be found in the \"PATH\""
+ + " environment variable for this argument to be effective.")
parser.add_argument(
- "command_string",
- default="",
- nargs="*",
- help="The command string to be run.%(default)s",
-)
+ 'command_string',
+ default='',
+ nargs='*',
+ help="The command string to be run.%(default)s")
# Populate stock_list with options we want.
stock_list = [("test_mode", 0), ("quiet", 1), ("debug", 0)]
@@ -118,9 +103,9 @@
valid_value(command_string)
if status_dir_path == "":
- status_dir_path = os.environ.get(
- "STATUS_DIR_PATH", os.environ.get("HOME") + "/status/"
- )
+ status_dir_path = \
+ os.environ.get("STATUS_DIR_PATH",
+ os.environ.get("HOME") + "/status/")
status_dir_path = add_trailing_slash(status_dir_path)
set_pgm_arg(status_dir_path)
valid_dir_path(status_dir_path)
@@ -141,9 +126,9 @@
status_file_path = status_dir_path + status_file_name
# Set environment variable for the benefit of child programs.
- os.environ["AUTO_STATUS_FILE_PATH"] = status_file_path
+ os.environ['AUTO_STATUS_FILE_PATH'] = status_file_path
# Set deprecated but still used AUTOSCRIPT_STATUS_FILE_PATH value.
- os.environ["AUTOSCRIPT_STATUS_FILE_PATH"] = status_file_path
+ os.environ['AUTOSCRIPT_STATUS_FILE_PATH'] = status_file_path
def script_func(command_string, status_file_path):
@@ -156,15 +141,9 @@
status_file_path The path to the status file which is to contain a copy of all stdout.
"""
- cmd_buf = (
- "script -a -q -f "
- + status_file_path
- + " -c '"
- + escape_bash_quotes(command_string)
- + ' ; printf "\\n'
- + sprint_varx(ret_code_str, "${?}").rstrip("\n")
- + "\\n\"'"
- )
+ cmd_buf = "script -a -q -f " + status_file_path + " -c '" \
+ + escape_bash_quotes(command_string) + " ; printf \"\\n" \
+ + sprint_varx(ret_code_str, "${?}").rstrip("\n") + "\\n\"'"
qprint_issuing(cmd_buf)
sub_proc = subprocess.Popen(cmd_buf, shell=True)
sub_proc.communicate()
@@ -173,13 +152,8 @@
# Retrieve return code by examining ret_code_str output statement from status file.
# Example text to be analyzed.
# auto_status_file_ret_code: 127
- cmd_buf = (
- "tail -n 10 "
- + status_file_path
- + ' | egrep -a "'
- + ret_code_str
- + ':[ ]+"'
- )
+ cmd_buf = "tail -n 10 " + status_file_path + " | egrep -a \"" \
+ + ret_code_str + ":[ ]+\""
rc, output = shell_cmd(cmd_buf)
key, value = parse_key_value(output)
shell_rc = int(value)
@@ -196,12 +170,8 @@
status_file_path The path to the status file which is to contain a copy of all stdout.
"""
- cmd_buf = (
- "set -o pipefail ; "
- + command_string
- + " 2>&1 | tee -a "
+ cmd_buf = "set -o pipefail ; " + command_string + " 2>&1 | tee -a " \
+ status_file_path
- )
qprint_issuing(cmd_buf)
sub_proc = subprocess.Popen(cmd_buf, shell=True)
sub_proc.communicate()
@@ -217,11 +187,10 @@
def main():
+
gen_setup()
- set_term_options(
- term_requests={"pgm_names": [command_string.split(" ")[0]]}
- )
+ set_term_options(term_requests={'pgm_names': [command_string.split(" ")[0]]})
global ret_code_str
ret_code_str = re.sub("\\.py$", "", pgm_name) + "_ret_code"
@@ -233,9 +202,8 @@
show_url = 0
set_pgm_arg(show_url)
else:
- shell_rc, status_file_url = shell_cmd(
- "get_file_path_url.py " + status_file_path
- )
+ shell_rc, status_file_url = shell_cmd("get_file_path_url.py "
+ + status_file_path)
status_file_url = status_file_url.rstrip("\n")
# Print status file path/url to stdout and to status file.
diff --git a/bin/event_notification_util.py b/bin/event_notification_util.py
index 9c52176..380a120 100755
--- a/bin/event_notification_util.py
+++ b/bin/event_notification_util.py
@@ -8,41 +8,39 @@
save_dir_path = sys.path.pop(0)
-modules = ["gen_arg", "gen_print", "gen_valid", "event_notification"]
+modules = ['gen_arg', 'gen_print', 'gen_valid', 'event_notification']
for module in modules:
exec("from " + module + " import *")
sys.path.insert(0, save_dir_path)
parser = argparse.ArgumentParser(
- usage="%(prog)s [OPTIONS]",
+ usage='%(prog)s [OPTIONS]',
description="%(prog)s will subscribe and receive event notifications when "
- + "properties change for the given dbus path.",
+ + "properties change for the given dbus path.",
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- prefix_chars="-+",
-)
+ prefix_chars='-+')
parser.add_argument(
- "--host",
- default="",
- help="The host name or IP of the system to subscribe to.",
-)
+ '--host',
+ default='',
+ help='The host name or IP of the system to subscribe to.')
parser.add_argument(
- "--username", default="root", help="The username for the host system."
-)
+ '--username',
+ default='root',
+ help='The username for the host system.')
parser.add_argument(
- "--password", default="", help="The password for the host system."
-)
+ '--password',
+ default='',
+ help='The password for the host system.')
parser.add_argument(
- "--dbus_path",
- default="",
- help='The path to be monitored (e.g. "/xyz/openbmc_project/sensors").',
-)
+ '--dbus_path',
+ default='',
+ help='The path to be monitored (e.g. "/xyz/openbmc_project/sensors").')
parser.add_argument(
- "--enable_trace",
+ '--enable_trace',
choices=[0, 1],
default=0,
- help="Indicates that trace needs to be enabled.",
-)
+ help='Indicates that trace needs to be enabled.')
# Populate stock_list with options we want.
diff --git a/bin/generate_inventory b/bin/generate_inventory
index 0c14454..80f725e 100755
--- a/bin/generate_inventory
+++ b/bin/generate_inventory
@@ -4,67 +4,57 @@
fields from the YAML phosphor-dbus-interfaces repository.
"""
-import json
-import os
-import sys
-
-import yaml
from gen_print import *
+import sys
+import os
+import yaml
+import json
+
lib_path = sys.path[0] + "/../lib"
sys.path.insert(0, lib_path)
# This list will be longer when more development codes are available.
-inventory_items = ["fru", "core", "fan", "fan_wc", "gpu"]
+inventory_items = ['fru', 'core', 'fan', 'fan_wc', 'gpu']
print_var(inventory_items)
-fru_inventory_file_path = "inventory.py"
+fru_inventory_file_path = 'inventory.py'
print_var(fru_inventory_file_path)
# Properties inventory list
yaml_inventory_list = []
# Clone the phosphor-dbus-interfaces repository
-cmd_buf = "git clone https://github.com/openbmc/phosphor-dbus-interfaces"
+cmd_buf = 'git clone https://github.com/openbmc/phosphor-dbus-interfaces'
os.system(cmd_buf)
-repo_subdir_path = "/phosphor-dbus-interfaces/xyz/openbmc_project/"
+repo_subdir_path = '/phosphor-dbus-interfaces/xyz/openbmc_project/'
base_dir_path = os.getcwd() + repo_subdir_path
# yaml file paths for FRU
-yaml_fru_list = [
- "Inventory/Item.interface.yaml",
- "Inventory/Decorator/Asset.interface.yaml",
- "Inventory/Decorator/Revision.interface.yaml",
- "Inventory/Decorator/Replaceable.interface.yaml",
- "Inventory/Decorator/Cacheable.interface.yaml",
- "State/Decorator/OperationalStatus.interface.yaml",
-]
+yaml_fru_list = ['Inventory/Item.interface.yaml',
+ 'Inventory/Decorator/Asset.interface.yaml',
+ 'Inventory/Decorator/Revision.interface.yaml',
+ 'Inventory/Decorator/Replaceable.interface.yaml',
+ 'Inventory/Decorator/Cacheable.interface.yaml',
+ 'State/Decorator/OperationalStatus.interface.yaml', ]
# yaml file paths for CORE.
-yaml_core_list = [
- "Inventory/Item.interface.yaml",
- "State/Decorator/OperationalStatus.interface.yaml",
-]
+yaml_core_list = ['Inventory/Item.interface.yaml',
+ 'State/Decorator/OperationalStatus.interface.yaml', ]
# yaml file paths for fan.
-yaml_fan_list = [
- "Inventory/Item.interface.yaml",
- "Inventory/Decorator/MeetsMinimumShipLevel.interface.yaml",
- "State/Decorator/OperationalStatus.interface.yaml",
-]
+yaml_fan_list = ['Inventory/Item.interface.yaml',
+ 'Inventory/Decorator/MeetsMinimumShipLevel.interface.yaml',
+ 'State/Decorator/OperationalStatus.interface.yaml', ]
# yaml file paths for fan_wc (fans in water-cooled system).
-yaml_fan_wc_list = [
- "Inventory/Item.interface.yaml",
- "Inventory/Decorator/MeetsMinimumShipLevel.interface.yaml",
-]
+yaml_fan_wc_list = ['Inventory/Item.interface.yaml',
+ 'Inventory/Decorator/MeetsMinimumShipLevel.interface.yaml', ]
# yaml file paths for GPU.
-yaml_gpu_list = [
- "Inventory/Item.interface.yaml",
- "Inventory/Decorator/Replaceable.interface.yaml",
- "State/Decorator/OperationalStatus.interface.yaml",
-]
+yaml_gpu_list = ['Inventory/Item.interface.yaml',
+ 'Inventory/Decorator/Replaceable.interface.yaml',
+ 'State/Decorator/OperationalStatus.interface.yaml', ]
# Append to inventory list
yaml_inventory_list.append(yaml_fru_list)
@@ -89,18 +79,16 @@
f = open(yaml_file_path)
yaml_data = yaml.safe_load(f)
f.close()
- for item in range(0, len(yaml_data["properties"])):
- tmp_data = yaml_data["properties"][item]["name"]
+ for item in range(0, len(yaml_data['properties'])):
+ tmp_data = yaml_data['properties'][item]['name']
inventory_dict[str(inventory_items[inv_index])].append(tmp_data)
# Pretty print json formatter
-data = json.dumps(
- inventory_dict,
- indent=4,
- sort_keys=True,
- default=str,
- separators=(",", ":"),
-)
+data = json.dumps(inventory_dict,
+ indent=4,
+ sort_keys=True,
+ default=str,
+ separators=(',', ':'))
# Check if there is mismatch in data vs expect list
if len(inventory_dict) != len(inventory_items):
@@ -112,8 +100,8 @@
# Write dictionary data to inventory file
print("\nGenerated Inventory item json format\n")
print(data)
-out = open(fru_inventory_file_path, "w")
-out.write("inventory_dict = ")
+out = open(fru_inventory_file_path, 'w')
+out.write('inventory_dict = ')
out.write(data)
out.close()
diff --git a/bin/generate_testsuite_info.py b/bin/generate_testsuite_info.py
index 7f43d62..6392145 100755
--- a/bin/generate_testsuite_info.py
+++ b/bin/generate_testsuite_info.py
@@ -5,55 +5,54 @@
Refer to https://robot-framework.readthedocs.io/en/3.0.1/autodoc/robot.parsing.html
"""
-import os
-import sys
-
from gen_arg import *
from gen_print import *
from gen_valid import *
from robot.parsing.model import TestData
+import sys
+import os
+
sys.path.append(os.path.join(os.path.dirname(__file__), "../lib"))
# Set exit_on_error for gen_valid functions.
set_exit_on_error(True)
-valid_options = ["name", "tags", "doc", "all"]
+valid_options = ['name', 'tags', 'doc', 'all']
parser = argparse.ArgumentParser(
- usage="%(prog)s [OPTIONS]",
- description=(
- ";%(prog)s will print test suite information to stdout. This "
- " information consists of any and/or all of the following: "
- " the suite name, test case names, tag names and doc"
- " strings. Example for generated test case names "
- " tests/test_basic_poweron.robot "
- " Verify Front And Rear LED At Standby Power On Test"
- " Check For Application Failures "
- " Verify Uptime Average Against Threshold Test SSH"
- " And IPMI Connections"
- ),
+ usage='%(prog)s [OPTIONS]',
+ description=";%(prog)s will print test suite information to stdout. This \
+ information consists of any and/or all of the following: \
+ the suite name, test case names, tag names and doc strings. \
+ Example for generated test case names \
+ tests/test_basic_poweron.robot \
+ Verify Front And Rear LED At Standby \
+ Power On Test \
+ Check For Application Failures \
+ Verify Uptime Average Against Threshold \
+ Test SSH And IPMI Connections",
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- prefix_chars="-+",
-)
+ prefix_chars='-+')
parser.add_argument(
- "--source_path", "-s", help="The robot test file or directory path."
-)
+ '--source_path',
+ '-s',
+ help='The robot test file or directory path.')
parser.add_argument(
- "--option",
- "-o",
+ '--option',
+ '-o',
default="name",
- help="Test case attribute name. This may be any one of the following:\n"
- + sprint_var(valid_options),
-)
+ help='Test case attribute name. This may be any one of the following:\n'
+ + sprint_var(valid_options))
# Populate stock_list with options we want.
stock_list = [("test_mode", 0), ("quiet", 0), ("debug", 0)]
-def exit_function(signal_number=0, frame=None):
+def exit_function(signal_number=0,
+ frame=None):
r"""
Execute whenever the program ends normally or with the signals that we
catch (i.e. TERM, INT).
@@ -66,7 +65,8 @@
qprint_pgm_footer()
-def signal_handler(signal_number, frame):
+def signal_handler(signal_number,
+ frame):
r"""
Handle signals. Without a function to catch a SIGTERM or SIGINT, the
program would terminate immediately with return code 143 and without
@@ -108,11 +108,9 @@
if os.path.isfile(source_path):
file_paths = [source_path]
else:
- file_paths = [
- os.path.join(path, file)
- for (path, dirs, files) in os.walk(source_path)
- for file in files
- ]
+ file_paths = [os.path.join(path, file)
+ for (path, dirs, files) in os.walk(source_path)
+ for file in files]
for file_path in file_paths:
print(file_path)
@@ -151,6 +149,7 @@
def main():
+
gen_get_options(parser, stock_list)
validate_parms()
diff --git a/bin/obmc_ser_num b/bin/obmc_ser_num
index 9f207b1..8d86099 100755
--- a/bin/obmc_ser_num
+++ b/bin/obmc_ser_num
@@ -4,14 +4,14 @@
This program will get the system serial number from an OBMC machine and print it to stdout.
"""
-import os
-import sys
-
-import requests
from gen_arg import *
from gen_print import *
from gen_valid import *
+import sys
+import os
+import requests
+
save_path_0 = sys.path[0]
del sys.path[0]
@@ -21,35 +21,33 @@
logging.captureWarnings(True)
parser = argparse.ArgumentParser(
- usage="%(prog)s [OPTIONS]",
+ usage='%(prog)s [OPTIONS]',
description="%(prog)s will get the system serial number from an OBMC"
+ " machine and print it to stdout as follows:\n\n"
+ "mch_ser_num:<ser num>",
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- prefix_chars="-+",
-)
+ prefix_chars='-+')
parser.add_argument(
- "--openbmc_username",
+ '--openbmc_username',
default="root",
- help="The username for communicating with the OpenBMC machine.",
-)
+ help='The username for communicating with the OpenBMC machine.')
parser.add_argument(
- "--openbmc_password",
+ '--openbmc_password',
default="0penBmc",
- help="The password for communicating with the OpenBMC machine.",
-)
+ help='The password for communicating with the OpenBMC machine.')
parser.add_argument(
- "openbmc_host", help="The host name or IP address of the OpenBMC machine."
-)
+ 'openbmc_host',
+ help='The host name or IP address of the OpenBMC machine.')
# Populate stock_list with options we want.
stock_list = [("test_mode", 0), ("quiet", 1)]
-def exit_function(signal_number=0, frame=None):
+def exit_function(signal_number=0,
+ frame=None):
r"""
Execute whenever the program ends normally or with the signals that we catch (i.e. TERM, INT).
"""
@@ -60,7 +58,8 @@
qprint_pgm_footer()
-def signal_handler(signal_number, frame):
+def signal_handler(signal_number,
+ frame):
r"""
Handle signals. Without a function to catch a SIGTERM or SIGINT, our program would terminate immediately
with return code 143 and without calling our exit_function.
@@ -97,6 +96,7 @@
def main():
+
if not gen_get_options(parser, stock_list):
return False
@@ -109,14 +109,12 @@
http_prefix = create_http_prefix(openbmc_host)
- command = http_prefix + "login"
+ command = http_prefix + 'login'
qprint_issuing(command)
- resp = session.post(
- command,
- json={"data": [openbmc_username, openbmc_password]},
- verify=False,
- )
- if resp.json()["status"] != "ok":
+ resp = session.post(command,
+ json={'data': [openbmc_username, openbmc_password]},
+ verify=False)
+ if resp.json()['status'] != 'ok':
json = resp.json()
print_error_report("http request failed:\n" + sprint_var(command))
raise Exception("Login failed.\n")
@@ -125,18 +123,15 @@
qprint_issuing(command)
resp = session.get(command, verify=False)
json = resp.json()
- if json["status"] != "ok":
+ if json['status'] != 'ok':
print_error_report("http request failed:\n" + sprint_var(command))
raise Exception("http request failed.\n")
try:
- mch_ser_num = json["data"]["SerialNumber"]
+ mch_ser_num = json['data']['SerialNumber']
except KeyError:
- print_error_report(
- "Failed to find 'SerialNumber' key in the"
- + " following data:\n"
- + sprint_var(json)
- )
+ print_error_report("Failed to find 'SerialNumber' key in the"
+ + " following data:\n" + sprint_var(json))
return False
print_var(mch_ser_num, 0, 0, 0)
diff --git a/bin/plug_ins/Auto_reboot/cp_master b/bin/plug_ins/Auto_reboot/cp_master
index 8f12588..7e1b274 100755
--- a/bin/plug_ins/Auto_reboot/cp_master
+++ b/bin/plug_ins/Auto_reboot/cp_master
@@ -10,15 +10,7 @@
save_dir_path = sys.path.pop(0)
-modules = [
- "gen_arg",
- "gen_print",
- "gen_valid",
- "gen_misc",
- "gen_cmd",
- "gen_plug_in_utils",
- "gen_call_robot",
-]
+modules = ['gen_arg', 'gen_print', 'gen_valid', 'gen_misc', 'gen_cmd', 'gen_plug_in_utils', 'gen_call_robot']
for module in modules:
exec("from " + module + " import *")
@@ -29,27 +21,22 @@
set_exit_on_error(True)
parser = argparse.ArgumentParser(
- usage="%(prog)s [OPTIONS]",
- description=(
- "%(prog)s will set the auto_boot policy according to the user's"
- " wishes."
- ),
+ usage='%(prog)s [OPTIONS]',
+ description="%(prog)s will set the auto_boot policy according to the user's wishes.",
formatter_class=argparse.RawTextHelpFormatter,
- prefix_chars="-+",
-)
+ prefix_chars='-+')
# Populate stock_list with options we want.
-stock_list = [
- ("test_mode", get_plug_default("test_mode", 0)),
- ("quiet", get_plug_default("quiet", 0)),
- ("debug", get_plug_default("debug", 0)),
-]
+stock_list = [("test_mode", get_plug_default("test_mode", 0)),
+ ("quiet", get_plug_default("quiet", 0)),
+ ("debug", get_plug_default("debug", 0))]
AUTO_REBOOT_DISABLE = "1"
def validate_parms():
+
r"""
Validate program parameters, etc. Return True or False (i.e. pass/fail) accordingly.
"""
@@ -66,9 +53,10 @@
def main():
+
gen_setup()
- set_term_options(term_requests="children")
+ set_term_options(term_requests='children')
print_plug_in_header()
@@ -79,36 +67,18 @@
lib_file_path = init_robot_file_path("lib/utils.robot")
- REDFISH_SUPPORT_TRANS_STATE = int(
- os.environ.get("REDFISH_SUPPORT_TRANS_STATE", 0)
- ) or int(os.environ.get("AUTOBOOT_REDFISH_SUPPORT_TRANS_STATE", 0))
+ REDFISH_SUPPORT_TRANS_STATE = int(os.environ.get('REDFISH_SUPPORT_TRANS_STATE', 0)) or \
+ int(os.environ.get('AUTOBOOT_REDFISH_SUPPORT_TRANS_STATE', 0))
enable_auto_reboot = 1 - AUTO_REBOOT_DISABLE
print_var(enable_auto_reboot)
keyword_string = "Set Auto Reboot Setting ${%i}" % enable_auto_reboot
- cmd_buf = create_robot_cmd_string(
- "extended/run_keyword.robot",
- OPENBMC_HOST,
- SSH_PORT,
- HTTPS_PORT,
- REST_USERNAME,
- REST_PASSWORD,
- OPENBMC_USERNAME,
- OPENBMC_PASSWORD,
- IPMI_USERNAME,
- IPMI_PASSWORD,
- REDFISH_SUPPORT_TRANS_STATE,
- keyword_string,
- lib_file_path,
- quiet,
- test_mode,
- debug,
- outputdir,
- output,
- log,
- report,
- )
+ cmd_buf = create_robot_cmd_string("extended/run_keyword.robot", OPENBMC_HOST, SSH_PORT, HTTPS_PORT,
+ REST_USERNAME, REST_PASSWORD, OPENBMC_USERNAME, OPENBMC_PASSWORD,
+ IPMI_USERNAME, IPMI_PASSWORD, REDFISH_SUPPORT_TRANS_STATE,
+ keyword_string, lib_file_path, quiet, test_mode, debug, outputdir,
+ output, log, report)
retry_count = 3
while not robot_cmd_fnc(cmd_buf):
diff --git a/bin/plug_ins/FFDC/cp_ffdc_check b/bin/plug_ins/FFDC/cp_ffdc_check
index b928658..8d51271 100755
--- a/bin/plug_ins/FFDC/cp_ffdc_check
+++ b/bin/plug_ins/FFDC/cp_ffdc_check
@@ -1,41 +1,35 @@
#!/usr/bin/env python3
-from gen_arg import *
-from gen_call_robot import *
-from gen_cmd import *
-from gen_misc import *
-from gen_plug_in_utils import *
from gen_print import *
from gen_valid import *
+from gen_arg import *
+from gen_misc import *
+from gen_cmd import *
+from gen_plug_in_utils import *
+from gen_call_robot import *
# Set exit_on_error for gen_valid functions.
set_exit_on_error(True)
parser = argparse.ArgumentParser(
- usage="%(prog)s [OPTIONS]",
- description=(
- "%(prog)s will determine whether FFDC should be collected. If so, it"
- " will return "
- )
- + repr(dump_ffdc_rc())
- + ".",
+ usage='%(prog)s [OPTIONS]',
+ description="%(prog)s will determine whether FFDC should be collected. If so, it will return "
+ + repr(dump_ffdc_rc()) + ".",
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- prefix_chars="-+",
-)
+ prefix_chars='-+')
# The stock_list will be passed to gen_get_options. We populate it with the names of stock parm options we
# want. These stock parms are pre-defined by gen_get_options.
-stock_list = [
- ("test_mode", get_plug_default("test_mode", 0)),
- ("quiet", get_plug_default("quiet", 0)),
- ("debug", get_plug_default("debug", 0)),
-]
+stock_list = [("test_mode", get_plug_default("test_mode", 0)),
+ ("quiet", get_plug_default("quiet", 0)),
+ ("debug", get_plug_default("debug", 0))]
# For now we are hard-coding this value vs adding a soft_errors=boolean entry in the parm_def file.
FFDC_SOFT_ERRORS = 1
-def exit_function(signal_number=0, frame=None):
+def exit_function(signal_number=0,
+ frame=None):
r"""
Execute whenever the program ends normally or with the signals that we catch (i.e. TERM, INT).
@@ -58,15 +52,14 @@
def main():
+
gen_setup()
print_plug_in_header()
if FFDC_COMMAND.upper() == "FAIL":
if AUTOBOOT_BOOT_SUCCESS == "0":
- print_timen(
- "The caller wishes to dump FFDC after each boot failure."
- )
+ print_timen("The caller wishes to dump FFDC after each boot failure.")
exit(dump_ffdc_rc())
elif FFDC_COMMAND.upper() == "ALL":
print_timen("The caller wishes to dump FFDC after each boot test.")
@@ -80,10 +73,8 @@
# Check the num_error_logs value left by the Soft_errors plug-in.
num_error_logs = int(restore_plug_in_value(0, "Soft_errors"))
if num_error_logs > 0:
- print_timen(
- 'The "Soft_errors" plug-in found soft_errors and the'
- + " caller wishes to dump FFDC on soft errors."
- )
+ print_timen("The \"Soft_errors\" plug-in found soft_errors and the"
+ + " caller wishes to dump FFDC on soft errors.")
exit(dump_ffdc_rc())
print_timen("The caller does not wish for any FFDC to be collected.")
diff --git a/bin/plug_ins/Soft_errors/cp_post_boot b/bin/plug_ins/Soft_errors/cp_post_boot
index 649fd31..9f9d515 100755
--- a/bin/plug_ins/Soft_errors/cp_post_boot
+++ b/bin/plug_ins/Soft_errors/cp_post_boot
@@ -1,13 +1,13 @@
#!/usr/bin/env python3
-from gen_arg import *
-from gen_call_robot import *
-from gen_cmd import *
-from gen_misc import *
-from gen_plug_in_utils import *
from gen_print import *
from gen_valid import *
+from gen_arg import *
+from gen_misc import *
+from gen_cmd import *
from var_funcs import *
+from gen_plug_in_utils import *
+from gen_call_robot import *
# Set exit_on_error for gen_valid functions.
set_exit_on_error(True)
@@ -15,25 +15,23 @@
parser = argparse.ArgumentParser(
- usage="%(prog)s [OPTIONS]",
+ usage='%(prog)s [OPTIONS]',
description="%(prog)s will calculate the value of num_err_logs and"
+ " save it as a plug-in value for the benefit of the FFDC plug-in."
+ " The FFDC plug-in can use that data to decide whether to collect"
+ " FFDC data.",
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- prefix_chars="-+",
-)
+ prefix_chars='-+')
# The stock_list will be passed to gen_get_options. We populate it with the names of stock parm options we
# want. These stock parms are pre-defined by gen_get_options.
-stock_list = [
- ("test_mode", 0),
- ("quiet", get_plug_default("quiet", 0)),
- ("debug", get_plug_default("debug", 0)),
-]
+stock_list = [("test_mode", 0),
+ ("quiet", get_plug_default("quiet", 0)),
+ ("debug", get_plug_default("debug", 0))]
-def exit_function(signal_number=0, frame=None):
+def exit_function(signal_number=0,
+ frame=None):
r"""
Execute whenever the program ends normally or with the signals that we catch (i.e. TERM, INT).
@@ -55,116 +53,73 @@
global AUTOSCRIPT_STATUS_FILE_PATH
# AUTOSCRIPT_STATUS_FILE_PATH is set when we're called by autoscript. For this program to work
# correctly, it must be called with autoscript.
- AUTOSCRIPT_STATUS_FILE_PATH = os.environ.get(
- "AUTOSCRIPT_STATUS_FILE_PATH", ""
- )
+ AUTOSCRIPT_STATUS_FILE_PATH = os.environ.get("AUTOSCRIPT_STATUS_FILE_PATH", "")
valid_value(AUTOSCRIPT_STATUS_FILE_PATH)
valid_value(AUTOBOOT_OPENBMC_HOST)
def main():
+
gen_setup()
print_plug_in_header()
# Get the number of error logs from the BMC.
init_robot_out_parms(get_plug_in_package_name() + "." + pgm_name + ".")
- high_sev_elogs_file_path = (
- AUTOBOOT_FFDC_DIR_PATH
- + AUTOBOOT_FFDC_PREFIX
- + "high_severity_errorlog.json"
- )
+ high_sev_elogs_file_path = AUTOBOOT_FFDC_DIR_PATH + AUTOBOOT_FFDC_PREFIX + "high_severity_errorlog.json"
lib_file_path = init_robot_file_path("lib/logging_utils.robot")
lib_file_path += ":" + init_robot_file_path("lib/gen_robot_print.py")
set_mod_global(lib_file_path)
- REDFISH_SUPPORT_TRANS_STATE = int(
- os.environ.get("REDFISH_SUPPORT_TRANS_STATE", 0)
- )
+ REDFISH_SUPPORT_TRANS_STATE = int(os.environ.get('REDFISH_SUPPORT_TRANS_STATE', 0))
if not REDFISH_SUPPORT_TRANS_STATE:
try:
from robot.libraries.BuiltIn import BuiltIn
-
- REDFISH_SUPPORT_TRANS_STATE = int(
- BuiltIn().get_variable_value(
- "${REDFISH_SUPPORT_TRANS_STATE}", default=0
- )
- )
+ REDFISH_SUPPORT_TRANS_STATE = \
+ int(BuiltIn().get_variable_value("${REDFISH_SUPPORT_TRANS_STATE}", default=0))
except Exception:
pass
- keyword_redfish_strings = [
- (
- "${error_logs}= Get Redfish Event Logs "
- " &{filter_low_severity_errlogs}"
- ),
- "${num_error_logs}= Get Length ${error_logs}",
- "Rprint Vars num_error_logs",
- (
- "${json_string}= Evaluate json.dumps($error_logs, indent=4) "
- " modules=json"
- ),
- "Append To File " + high_sev_elogs_file_path + " ${json_string}",
- ]
+ keyword_redfish_strings = \
+ [
+ "${error_logs}= Get Redfish Event Logs &{filter_low_severity_errlogs}",
+ "${num_error_logs}= Get Length ${error_logs}",
+ "Rprint Vars num_error_logs",
+ "${json_string}= Evaluate json.dumps($error_logs, indent=4) modules=json",
+ "Append To File " + high_sev_elogs_file_path + " ${json_string}"
+ ]
- keyword_strings = [
- "${error_logs}= Get Error Logs &{filter_low_severity_errlogs}",
- "${num_error_logs}= Get Length ${error_logs}",
- "Rprint Vars num_error_logs",
- (
- "${json_string}= Evaluate json.dumps($error_logs, indent=4) "
- " modules=json"
- ),
- "Append To File " + high_sev_elogs_file_path + " ${json_string}",
- ]
+ keyword_strings = \
+ [
+ "${error_logs}= Get Error Logs &{filter_low_severity_errlogs}",
+ "${num_error_logs}= Get Length ${error_logs}",
+ "Rprint Vars num_error_logs",
+ "${json_string}= Evaluate json.dumps($error_logs, indent=4) modules=json",
+ "Append To File " + high_sev_elogs_file_path + " ${json_string}"
+ ]
if REDFISH_SUPPORT_TRANS_STATE:
- keyword_string = " ; ".join(keyword_redfish_strings)
+ keyword_string = ' ; '.join(keyword_redfish_strings)
else:
- keyword_string = " ; ".join(keyword_strings)
+ keyword_string = ' ; '.join(keyword_strings)
set_mod_global(keyword_string)
- cmd_buf = create_robot_cmd_string(
- "extended/run_keyword.robot",
- OPENBMC_HOST,
- SSH_PORT,
- HTTPS_PORT,
- REST_USERNAME,
- REST_PASSWORD,
- OPENBMC_USERNAME,
- OPENBMC_PASSWORD,
- keyword_string,
- lib_file_path,
- quiet,
- test_mode,
- debug,
- outputdir,
- output,
- log,
- report,
- )
+ cmd_buf = create_robot_cmd_string("extended/run_keyword.robot", OPENBMC_HOST, SSH_PORT, HTTPS_PORT,
+ REST_USERNAME, REST_PASSWORD, OPENBMC_USERNAME, OPENBMC_PASSWORD,
+ keyword_string, lib_file_path, quiet,
+ test_mode, debug, outputdir, output, log, report)
if not robot_cmd_fnc(cmd_buf):
exit(1)
# The output contains the num_error_logs value which we will isolate with egrep.
- rc, out_buf = shell_cmd(
- "egrep '^num_error_logs:[ ]' " + AUTOSCRIPT_STATUS_FILE_PATH,
- quiet=1,
- print_output=0,
- )
+ rc, out_buf = shell_cmd("egrep '^num_error_logs:[ ]' " + AUTOSCRIPT_STATUS_FILE_PATH, quiet=1,
+ print_output=0)
result = key_value_outbuf_to_dict(out_buf)
- num_error_logs = int(result["num_error_logs"])
+ num_error_logs = int(result['num_error_logs'])
save_plug_in_value(num_error_logs)
if num_error_logs > 0:
- qprint_timen(
- "Adding the name of our high severity error logs FFDC file "
- + "to the appropriate file list."
- )
- shell_cmd(
- "echo "
- + high_sev_elogs_file_path
- + " > "
- + AUTOBOOT_FFDC_LIST_FILE_PATH
- )
+ qprint_timen("Adding the name of our high severity error logs FFDC file "
+ + "to the appropriate file list.")
+ shell_cmd("echo " + high_sev_elogs_file_path + " > " + AUTOBOOT_FFDC_LIST_FILE_PATH)
else:
os.remove(high_sev_elogs_file_path)
diff --git a/bin/plug_ins/Stop/cp_stop_check b/bin/plug_ins/Stop/cp_stop_check
index 994e2d9..8eb8e05 100755
--- a/bin/plug_ins/Stop/cp_stop_check
+++ b/bin/plug_ins/Stop/cp_stop_check
@@ -5,61 +5,56 @@
"""
import argparse
+import sys
+import subprocess
import os
import re
-import subprocess
-import sys
-from gen_arg import *
-from gen_call_robot import *
-from gen_cmd import *
-from gen_misc import *
-from gen_plug_in_utils import *
from gen_print import *
from gen_valid import *
+from gen_arg import *
+from gen_misc import *
+from gen_cmd import *
+from gen_plug_in_utils import *
+from gen_call_robot import *
# Set exit_on_error for gen_valid functions.
set_exit_on_error(True)
# Initialize default plug-in parms..
STOP_REST_FAIL = 0
-STOP_COMMAND = ""
+STOP_COMMAND = ''
stop_test_rc = 2
STOP_VERIFY_HARDWARE_FAIL = 0
# Create parser object to process command line parameters and args.
parser = argparse.ArgumentParser(
- usage="%(prog)s [OPTIONS]",
- description='If the "Stop" plug-in is selected by the user, %(prog)s'
+ usage='%(prog)s [OPTIONS]',
+ description="If the \"Stop\" plug-in is selected by the user, %(prog)s"
+ " is called by OBMC Boot Test after each boot test. If %(prog)s returns"
- + " "
- + str(stop_test_rc)
- + ", then OBMC Boot Test will stop. The user"
+ + " " + str(stop_test_rc) + ", then OBMC Boot Test will stop. The user"
+ " may set environment variable STOP_COMMAND to contain any valid bash"
+ " command or program. %(prog)s will run this stop command. If the stop"
+ " command returns non-zero, then %(prog)s will return "
- + str(stop_test_rc)
- + ". %(prog)s recognizes some special values for"
- + ' STOP_COMMAND: 1) "FAIL" means that OBMC Boot Test should stop'
- + ' whenever a boot test fails. 2) "ALL" means that OBMC Boot Test'
+ + str(stop_test_rc) + ". %(prog)s recognizes some special values for"
+ + " STOP_COMMAND: 1) \"FAIL\" means that OBMC Boot Test should stop"
+ + " whenever a boot test fails. 2) \"ALL\" means that OBMC Boot Test"
+ " should stop after any boot test. If environment variable"
+ " STOP_REST_FAIL is set, OBMC Boot Test will stop if REST commands are"
+ " no longer working.",
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- prefix_chars="-+",
-)
+ prefix_chars='-+')
# The stock_list will be passed to gen_get_options. We populate it with the names of stock parm options we
# want. These stock parms are pre-defined by gen_get_options.
-stock_list = [
- ("test_mode", get_plug_default("test_mode", 0)),
- ("quiet", get_plug_default("quiet", 0)),
- ("debug", get_plug_default("debug", 0)),
-]
+stock_list = [("test_mode", get_plug_default("test_mode", 0)),
+ ("quiet", get_plug_default("quiet", 0)),
+ ("debug", get_plug_default("debug", 0))]
-def exit_function(signal_number=0, frame=None):
+def exit_function(signal_number=0,
+ frame=None):
r"""
Execute whenever the program ends normally or with the signals that we catch (i.e. TERM, INT).
@@ -98,9 +93,8 @@
if not STOP_REST_FAIL:
return
- REDFISH_SUPPORT_TRANS_STATE = int(
- os.environ.get("REDFISH_SUPPORT_TRANS_STATE", 0)
- ) or int(os.environ.get("AUTOBOOT_REDFISH_SUPPORT_TRANS_STATE", 0))
+ REDFISH_SUPPORT_TRANS_STATE = int(os.environ.get('REDFISH_SUPPORT_TRANS_STATE', 0)) or \
+ int(os.environ.get('AUTOBOOT_REDFISH_SUPPORT_TRANS_STATE', 0))
if REDFISH_SUPPORT_TRANS_STATE:
interface = "redfish"
@@ -109,54 +103,23 @@
print_timen("Checking to see whether %s commands are working." % interface)
init_robot_out_parms(get_plug_in_package_name() + "." + pgm_name + ".")
- lib_file_path = (
- init_robot_file_path("lib/utils.robot")
- + ":"
+ lib_file_path = init_robot_file_path("lib/utils.robot") + ":" \
+ init_robot_file_path("lib/gen_robot_print.py")
- )
set_mod_global(lib_file_path)
- timeout = "0 seconds"
- interval = "1 second"
- keyword_string = (
- "${match_state}= Create Dictionary %s=1 ;" % interface
- + " ${state}= Wait State ${match_state} "
- + timeout
- + " "
- + interval
- + " quiet=${1} ; Rpvar state"
- )
+ timeout = '0 seconds'
+ interval = '1 second'
+ keyword_string = "${match_state}= Create Dictionary %s=1 ;" % interface +\
+ " ${state}= Wait State ${match_state} " + timeout + " " +\
+ interval + " quiet=${1} ; Rpvar state"
set_mod_global(keyword_string)
- cmd_buf = create_robot_cmd_string(
- "extended/run_keyword.robot",
- OPENBMC_HOST,
- SSH_PORT,
- HTTPS_PORT,
- REST_USERNAME,
- REST_PASSWORD,
- OPENBMC_USERNAME,
- OPENBMC_PASSWORD,
- REDFISH_SUPPORT_TRANS_STATE,
- keyword_string,
- lib_file_path,
- quiet,
- test_mode,
- debug,
- outputdir,
- output,
- log,
- report,
- loglevel,
- )
+ cmd_buf = create_robot_cmd_string("extended/run_keyword.robot", OPENBMC_HOST, SSH_PORT, HTTPS_PORT,
+ REST_USERNAME, REST_PASSWORD, OPENBMC_USERNAME, OPENBMC_PASSWORD,
+ REDFISH_SUPPORT_TRANS_STATE, keyword_string, lib_file_path, quiet,
+ test_mode, debug, outputdir, output, log, report, loglevel)
if not robot_cmd_fnc(cmd_buf):
- print_timen(
- "The caller wishes to stop test execution if %s commands are"
- " failing." % interface
- )
+ print_timen("The caller wishes to stop test execution if %s commands are failing." % interface)
stop_check()
- print_timen(
- "%s commands are working so no reason as of yet to stop the test."
- % interface
- )
+ print_timen("%s commands are working so no reason as of yet to stop the test." % interface)
def esel_stop_check():
@@ -168,15 +131,10 @@
if STOP_ESEL_STOP_FILE_PATH == "":
return
- cmd_buf = (
- "esel_stop_check --esel_stop_file_path=" + STOP_ESEL_STOP_FILE_PATH
- )
+ cmd_buf = "esel_stop_check --esel_stop_file_path=" + STOP_ESEL_STOP_FILE_PATH
shell_rc, out_buf = shell_cmd(cmd_buf, show_err=0)
if shell_rc == stop_test_rc:
- print_timen(
- "The caller wishes to stop test execution based on the presence of"
- " certain esel entries."
- )
+ print_timen("The caller wishes to stop test execution based on the presence of certain esel entries.")
stop_check()
@@ -189,17 +147,12 @@
if STOP_PEL_STOP_FILE_PATH == "":
return
- pel_txt_file_path = (
- os.environ.get("AUTOBOOT_FFDC_DIR_PATH", "")
- + os.environ.get("AUTOBOOT_FFDC_PREFIX", "")
- + "PEL_logs_list.json"
- )
+ pel_txt_file_path = os.environ.get("AUTOBOOT_FFDC_DIR_PATH", "") + \
+ os.environ.get("AUTOBOOT_FFDC_PREFIX", "") + "PEL_logs_list.json"
if not os.path.isfile(pel_txt_file_path):
- qprint_timen(
- "The following file was not present so no further"
- + " action will be taken."
- )
+ qprint_timen("The following file was not present so no further"
+ + " action will be taken.")
qprint_var(pel_txt_file_path)
return
@@ -208,9 +161,8 @@
# If pel_stop_file_path is unqualified and cannot be found, pre-pend
# default_stop_dir_path for the user.
pel_stop_file_path = os.environ.get("STOP_PEL_STOP_FILE_PATH", "")
- if not os.path.isfile(pel_stop_file_path) and os.path.isfile(
- default_stop_dir_path + pel_stop_file_path
- ):
+ if not os.path.isfile(pel_stop_file_path) and \
+ os.path.isfile(default_stop_dir_path + pel_stop_file_path):
pel_stop_file_path = default_stop_dir_path + pel_stop_file_path
qprint_timen("Using default stop file path.")
qprint_var(pel_stop_file_path)
@@ -219,31 +171,28 @@
pel_stop_list = file_to_list(pel_stop_file_path, newlines=0, comments=0)
if len(pel_stop_list) == 0:
- print_timen(
- "There are no records to process in " + pel_stop_file_path + "."
- )
+ print_timen("There are no records to process in "
+ + pel_stop_file_path + ".")
return
pel_all_list = file_to_list(pel_txt_file_path, newlines=0, comments=0)
if len(pel_all_list) == 0:
- print_timen(
- "There are no records to process in " + pel_txt_file_path + "."
- )
+ print_timen("There are no records to process in "
+ + pel_txt_file_path + ".")
return
for stop_pel in pel_stop_list:
for pel_all in pel_all_list:
pel_match = re.search(".*SRC.*" + stop_pel + ".*", pel_all)
if pel_match:
- print_timen(
- "The caller wishes to stop test execution based on "
- + "the presence of certain PEL entries."
- )
+ print_timen("The caller wishes to stop test execution based on "
+ + "the presence of certain PEL entries.")
stop_check()
def main():
+
gen_setup()
print_plug_in_header()
@@ -268,13 +217,10 @@
pel_stop_check()
if STOP_VERIFY_HARDWARE_FAIL:
- hardware_error_found = restore_plug_in_value(0, "Verify_hardware")
+ hardware_error_found = restore_plug_in_value(0, 'Verify_hardware')
if hardware_error_found:
- print_timen(
- "The caller wishes to stop test execution when the"
- " Verify_hardware plug-in detects a"
- + " hardware error."
- )
+ print_timen("The caller wishes to stop test execution when the Verify_hardware plug-in detects a"
+ + " hardware error.")
stop_check()
qprint_timen("The caller does not wish to stop the test run.")
diff --git a/bin/print_ffdc_functions b/bin/print_ffdc_functions
index ec7432b..325fa06 100755
--- a/bin/print_ffdc_functions
+++ b/bin/print_ffdc_functions
@@ -4,13 +4,13 @@
See help text for details.
"""
-import sys
-
from gen_arg import *
from gen_print import *
from gen_valid import *
from openbmc_ffdc_list import *
+import sys
+
save_path_0 = sys.path[0]
del sys.path[0]
@@ -22,12 +22,8 @@
parser = argparse.ArgumentParser(
usage="%(prog)s [OPTIONS]",
- description=(
- "%(prog)s will print a colon-delimited list of all valid OBMC FFDC"
- " functions.\n\nExample:"
- )
- + "\n\n\nDump Log:FFDC Generic Report:Get Request FFDC:SEL Log:BMC"
- " Specific Files:Sys Inventory Files"
+ description="%(prog)s will print a colon-delimited list of all valid OBMC FFDC functions.\n\nExample:"
+ + "\n\n\nDump Log:FFDC Generic Report:Get Request FFDC:SEL Log:BMC Specific Files:Sys Inventory Files"
+ ":Core Files:OS FFDC:Dump Files",
formatter_class=argparse.RawDescriptionHelpFormatter,
prefix_chars="-+",
@@ -72,6 +68,7 @@
def main():
+
gen_get_options(parser, stock_list)
validate_parms()
diff --git a/bin/process_plug_in_packages.py b/bin/process_plug_in_packages.py
index febbd53..bd389c8 100755
--- a/bin/process_plug_in_packages.py
+++ b/bin/process_plug_in_packages.py
@@ -4,20 +4,13 @@
See help text for details.
"""
-import os
-import subprocess
import sys
+import subprocess
+import os
save_dir_path = sys.path.pop(0)
-modules = [
- "gen_arg",
- "gen_print",
- "gen_valid",
- "gen_plug_in",
- "gen_cmd",
- "gen_misc",
-]
+modules = ['gen_arg', 'gen_print', 'gen_valid', 'gen_plug_in', 'gen_cmd', 'gen_misc']
for module in modules:
exec("from " + module + " import *")
@@ -25,105 +18,98 @@
# Create parser object.
parser = argparse.ArgumentParser(
- usage="%(prog)s [OPTIONS]",
+ usage='%(prog)s [OPTIONS]',
description="%(prog)s will process the plug-in packages passed to it."
- + " A plug-in package is essentially a directory containing"
- + " one or more call point programs. Each of these call point"
- + ' programs must have a prefix of "cp_". When calling'
- + " %(prog)s, a user must provide a call_point parameter"
- + " (described below). For each plug-in package passed,"
- + " %(prog)s will check for the presence of the specified call"
- + " point program in the plug-in directory. If it is found,"
- + " %(prog)s will run it. It is the responsibility of the"
- + " caller to set any environment variables needed by the call"
- + " point programs.\n\nAfter each call point program"
- + " has been run, %(prog)s will print the following values in"
- + " the following formats for use by the calling program:\n"
- + " failed_plug_in_name: <failed plug-in value,"
- + " if any>\n shell_rc: "
- + "<shell return code value of last call point program - this"
- + " will be printed in hexadecimal format. Also, be aware"
- + " that if a call point program returns a value it will be"
- + " shifted left 2 bytes (e.g. rc of 2 will be printed as"
- + " 0x00000200). That is because the rightmost byte is"
- + " reserved for errors in calling the call point program"
- + " rather than errors generated by the call point program.>",
+ + " A plug-in package is essentially a directory containing"
+ + " one or more call point programs. Each of these call point"
+ + " programs must have a prefix of \"cp_\". When calling"
+ + " %(prog)s, a user must provide a call_point parameter"
+ + " (described below). For each plug-in package passed,"
+ + " %(prog)s will check for the presence of the specified call"
+ + " point program in the plug-in directory. If it is found,"
+ + " %(prog)s will run it. It is the responsibility of the"
+ + " caller to set any environment variables needed by the call"
+ + " point programs.\n\nAfter each call point program"
+ + " has been run, %(prog)s will print the following values in"
+ + " the following formats for use by the calling program:\n"
+ + " failed_plug_in_name: <failed plug-in value,"
+ + " if any>\n shell_rc: "
+ + "<shell return code value of last call point program - this"
+ + " will be printed in hexadecimal format. Also, be aware"
+ + " that if a call point program returns a value it will be"
+ + " shifted left 2 bytes (e.g. rc of 2 will be printed as"
+ + " 0x00000200). That is because the rightmost byte is"
+ + " reserved for errors in calling the call point program"
+ + " rather than errors generated by the call point program.>",
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- prefix_chars="-+",
-)
+ prefix_chars='-+')
# Create arguments.
parser.add_argument(
- "plug_in_dir_paths",
- nargs="?",
+ 'plug_in_dir_paths',
+ nargs='?',
default="",
- help=plug_in_dir_paths_help_text + default_string,
-)
+ help=plug_in_dir_paths_help_text + default_string)
parser.add_argument(
- "--call_point",
+ '--call_point',
default="setup",
required=True,
- help="The call point program name. This value must not include the"
- + ' "cp_" prefix. For each plug-in package passed to this program,'
- + " the specified call_point program will be called if it exists in"
- + " the plug-in directory."
- + default_string,
-)
+ help='The call point program name. This value must not include the'
+ + ' "cp_" prefix. For each plug-in package passed to this program,'
+ + ' the specified call_point program will be called if it exists in'
+ + ' the plug-in directory.' + default_string)
parser.add_argument(
- "--allow_shell_rc",
+ '--allow_shell_rc',
default="0x00000000",
- help="The user may supply a value other than zero to indicate an"
- + " acceptable non-zero return code. For example, if this value"
- + " equals 0x00000200, it means that for each plug-in call point that"
- + " runs, a 0x00000200 will not be counted as a failure. See note"
- + " above regarding left-shifting of return codes."
- + default_string,
-)
+ help='The user may supply a value other than zero to indicate an'
+ + ' acceptable non-zero return code. For example, if this value'
+ + ' equals 0x00000200, it means that for each plug-in call point that'
+ + ' runs, a 0x00000200 will not be counted as a failure. See note'
+ + ' above regarding left-shifting of return codes.' + default_string)
parser.add_argument(
- "--stop_on_plug_in_failure",
+ '--stop_on_plug_in_failure',
default=1,
type=int,
choices=[1, 0],
- help="If this parameter is set to 1, this program will stop and return "
- + "non-zero if the call point program from any plug-in directory "
- + "fails. Conversely, if it is set to false, this program will run "
- + "the call point program from each and every plug-in directory "
- + "regardless of their return values. Typical example cases where "
- + "you'd want to run all plug-in call points regardless of success "
- + 'or failure would be "cleanup" or "ffdc" call points.',
-)
+ help='If this parameter is set to 1, this program will stop and return '
+ + 'non-zero if the call point program from any plug-in directory '
+ + 'fails. Conversely, if it is set to false, this program will run '
+ + 'the call point program from each and every plug-in directory '
+ + 'regardless of their return values. Typical example cases where '
+ + 'you\'d want to run all plug-in call points regardless of success '
+ + 'or failure would be "cleanup" or "ffdc" call points.')
parser.add_argument(
- "--stop_on_non_zero_rc",
+ '--stop_on_non_zero_rc',
default=0,
type=int,
choices=[1, 0],
- help="If this parm is set to 1 and a plug-in call point program returns "
- + 'a valid non-zero return code (see "allow_shell_rc" parm above),'
- + " this program will stop processing and return 0 (success). Since"
- + " this constitutes a successful exit, this would normally be used"
- + " where the caller wishes to stop processing if one of the plug-in"
- + " directory call point programs returns a special value indicating"
- + " that some special case has been found. An example might be in"
- + ' calling some kind of "check_errl" call point program. Such a'
- + " call point program might return a 2 (i.e. 0x00000200) to indicate"
- + ' that a given error log entry was found in an "ignore" list and is'
- + " therefore to be ignored. That being the case, no other"
- + ' "check_errl" call point program would need to be called.'
- + default_string,
-)
+ help='If this parm is set to 1 and a plug-in call point program returns '
+ + 'a valid non-zero return code (see "allow_shell_rc" parm above),'
+ + ' this program will stop processing and return 0 (success). Since'
+ + ' this constitutes a successful exit, this would normally be used'
+ + ' where the caller wishes to stop processing if one of the plug-in'
+ + ' directory call point programs returns a special value indicating'
+ + ' that some special case has been found. An example might be in'
+ + ' calling some kind of "check_errl" call point program. Such a'
+ + ' call point program might return a 2 (i.e. 0x00000200) to indicate'
+ + ' that a given error log entry was found in an "ignore" list and is'
+ + ' therefore to be ignored. That being the case, no other'
+ + ' "check_errl" call point program would need to be called.'
+ + default_string)
parser.add_argument(
- "--mch_class", default="obmc", help=mch_class_help_text + default_string
-)
+ '--mch_class',
+ default="obmc",
+ help=mch_class_help_text + default_string)
# Populate stock_list with options we want.
stock_list = [("test_mode", 0), ("quiet", 1), ("debug", 0)]
-original_path = os.environ.get("PATH")
+original_path = os.environ.get('PATH')
def validate_parms():
@@ -141,7 +127,9 @@
set_pgm_arg(allow_shell_rc)
-def run_pgm(plug_in_dir_path, call_point, allow_shell_rc):
+def run_pgm(plug_in_dir_path,
+ call_point,
+ allow_shell_rc):
r"""
Run the call point program in the given plug_in_dir_path. Return the following:
rc The return code - 0 = PASS, 1 = FAIL.
@@ -171,10 +159,8 @@
# No such call point in this plug in dir path. This is legal so we return 0, etc.
return rc, shell_rc, failed_plug_in_name
- print(
- "------------------------------------------------- Starting plug-"
- + "in -----------------------------------------------"
- )
+ print("------------------------------------------------- Starting plug-"
+ + "in -----------------------------------------------")
print_timen("Running " + plug_in_name + "/" + cp_prefix + call_point + ".")
@@ -184,36 +170,26 @@
else:
auto_status_file_prefix = ""
auto_status_file_prefix += plug_in_name + ".cp_" + call_point
- status_dir_path = add_trailing_slash(
- os.environ.get("STATUS_DIR_PATH", os.environ["HOME"] + "/status/")
- )
+ status_dir_path =\
+ add_trailing_slash(os.environ.get("STATUS_DIR_PATH",
+ os.environ['HOME']
+ + "/status/"))
if not os.path.isdir(status_dir_path):
- AUTOBOOT_EXECDIR = add_trailing_slash(
- os.environ.get("AUTOBOOT_EXECDIR", "")
- )
+ AUTOBOOT_EXECDIR = \
+ add_trailing_slash(os.environ.get("AUTOBOOT_EXECDIR", ""))
status_dir_path = AUTOBOOT_EXECDIR + "logs/"
if not os.path.exists(status_dir_path):
os.makedirs(status_dir_path)
- status_file_name = (
- auto_status_file_prefix + "." + file_date_time_stamp() + ".status"
- )
- auto_status_file_subcmd = (
- "auto_status_file.py --status_dir_path="
- + status_dir_path
- + " --status_file_name="
- + status_file_name
- + " --quiet=1 --show_url=1 --prefix="
- + auto_status_file_prefix
- + " --stdout="
- + str(stdout)
- + " "
- )
+ status_file_name = auto_status_file_prefix + "." + file_date_time_stamp() \
+ + ".status"
+ auto_status_file_subcmd = "auto_status_file.py --status_dir_path=" \
+ + status_dir_path + " --status_file_name=" + status_file_name \
+ + " --quiet=1 --show_url=1 --prefix=" \
+ + auto_status_file_prefix + " --stdout=" + str(stdout) + " "
cmd_buf = "PATH=" + plug_in_dir_path.rstrip("/") + ":${PATH}"
print_issuing(cmd_buf)
- os.environ["PATH"] = (
- plug_in_dir_path.rstrip("/") + os.pathsep + original_path
- )
+ os.environ['PATH'] = plug_in_dir_path.rstrip("/") + os.pathsep + original_path
cmd_buf = auto_status_file_subcmd + cp_prefix + call_point
print_issuing(cmd_buf)
@@ -229,16 +205,11 @@
failed_plug_in_name = plug_in_name + "/" + cp_prefix + call_point
if failed_plug_in_name != "" and not stdout:
# Use tail to avoid double-printing of status_file_url.
- shell_cmd(
- "tail -n +2 " + status_dir_path + status_file_name,
- quiet=1,
- print_output=1,
- )
+ shell_cmd("tail -n +2 " + status_dir_path + status_file_name, quiet=1,
+ print_output=1)
- print(
- "------------------------------------------------- Ending plug-in"
- + " -------------------------------------------------"
- )
+ print("------------------------------------------------- Ending plug-in"
+ + " -------------------------------------------------")
if failed_plug_in_name != "":
print_var(failed_plug_in_name)
print_var(shell_rc, hexa())
@@ -247,9 +218,10 @@
def main():
+
gen_setup()
- set_term_options(term_requests="children")
+ set_term_options(term_requests='children')
# Access program parameter globals.
global plug_in_dir_paths
@@ -258,9 +230,8 @@
global stop_on_plug_in_failure
global stop_on_non_zero_rc
- plug_in_packages_list = return_plug_in_packages_list(
- plug_in_dir_paths, mch_class
- )
+ plug_in_packages_list = return_plug_in_packages_list(plug_in_dir_paths,
+ mch_class)
qprint_var(plug_in_packages_list)
qprint("\n")
@@ -274,18 +245,15 @@
ret_code = 0
for plug_in_dir_path in plug_in_packages_list:
- rc, shell_rc, failed_plug_in_name = run_pgm(
- plug_in_dir_path, call_point, allow_shell_rc
- )
+ rc, shell_rc, failed_plug_in_name = \
+ run_pgm(plug_in_dir_path, call_point, allow_shell_rc)
if rc != 0:
ret_code = 1
if stop_on_plug_in_failure:
break
if shell_rc != 0 and stop_on_non_zero_rc:
- qprint_time(
- "Stopping on non-zero shell return code as requested"
- + " by caller.\n"
- )
+ qprint_time("Stopping on non-zero shell return code as requested"
+ + " by caller.\n")
break
if ret_code != 0:
diff --git a/bin/prop_call.py b/bin/prop_call.py
index 9089d4e..e167fa5 100755
--- a/bin/prop_call.py
+++ b/bin/prop_call.py
@@ -16,14 +16,14 @@
my_program --test_mode=y --quiet=n file1 file2 file3
"""
-import os
-import sys
-
from gen_arg import *
-from gen_cmd import *
-from gen_misc import *
from gen_print import *
from gen_valid import *
+from gen_misc import *
+from gen_cmd import *
+
+import sys
+import os
save_path_0 = sys.path[0]
del sys.path[0]
@@ -33,39 +33,39 @@
parser = argparse.ArgumentParser(
- usage="%(prog)s [OPTIONS]",
+ usage='%(prog)s [OPTIONS]',
description="%(prog)s will call a program using parameters retrieved"
+ " from the given properties file.",
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- prefix_chars="-+",
-)
+ prefix_chars='-+')
parser.add_argument(
- "--prop_dir_path",
+ '--prop_dir_path',
default=os.environ.get("PROP_DIR_PATH", os.getcwd()),
- help="The path to the directory that contains the properties file."
+ help='The path to the directory that contains the properties file.'
+ ' The default value is environment variable "PROP_DIR_PATH", if'
- + " set. Otherwise, it is the current working directory.",
-)
+ + ' set. Otherwise, it is the current working directory.')
parser.add_argument(
- "--prop_file_name",
- help="The path to a properties file that contains the parameters to"
+ '--prop_file_name',
+ help='The path to a properties file that contains the parameters to'
+ ' pass to the program. If the properties file has a ".properties"'
- + " extension, the caller need not specify the extension. The format"
- + " of each line in the properties file should be as follows:"
- + " <parm_name=parm_value>. Do not quote the parm value. To specify"
+ + ' extension, the caller need not specify the extension. The format'
+ + ' of each line in the properties file should be as follows:'
+ + ' <parm_name=parm_value>. Do not quote the parm value. To specify'
+ ' positional parms, use a parm name of "pos". For example: pos=this'
- " value",
-)
+ ' value')
-parser.add_argument("program_name", help="The name of the program to be run.")
+parser.add_argument(
+ 'program_name',
+ help='The name of the program to be run.')
# Populate stock_list with options we want.
stock_list = [("test_mode", 0), ("quiet", 1), ("debug", 0)]
-def exit_function(signal_number=0, frame=None):
+def exit_function(signal_number=0,
+ frame=None):
r"""
Execute whenever the program ends normally or with the signals that we catch (i.e. TERM, INT).
"""
@@ -76,7 +76,8 @@
qprint_pgm_footer()
-def signal_handler(signal_number, frame):
+def signal_handler(signal_number,
+ frame):
r"""
Handle signals. Without a function to catch a SIGTERM or SIGINT, our program would terminate immediately
with return code 143 and without calling our exit_function.
@@ -126,6 +127,7 @@
def main():
+
if not gen_get_options(parser, stock_list):
return False
diff --git a/bin/validate_plug_ins.py b/bin/validate_plug_ins.py
index fa12f66..78e65e5 100755
--- a/bin/validate_plug_ins.py
+++ b/bin/validate_plug_ins.py
@@ -1,12 +1,12 @@
#!/usr/bin/env python3
-import os
-import sys
-
+from gen_print import *
from gen_arg import *
from gen_plug_in import *
-from gen_print import *
+
+import sys
+import os
try:
import __builtin__
@@ -31,32 +31,32 @@
# Create parser object.
parser = argparse.ArgumentParser(
- usage="%(prog)s [OPTIONS] [PLUG_IN_DIR_PATHS]",
+ usage='%(prog)s [OPTIONS] [PLUG_IN_DIR_PATHS]',
description="%(prog)s will validate the plug-in packages passed to it."
- + " It will also print a list of the absolute plug-in"
- + " directory paths for use by the calling program.",
+ + " It will also print a list of the absolute plug-in"
+ + " directory paths for use by the calling program.",
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- prefix_chars="-+",
-)
+ prefix_chars='-+')
# Create arguments.
parser.add_argument(
- "plug_in_dir_paths",
- nargs="?",
+ 'plug_in_dir_paths',
+ nargs='?',
default="",
- help=plug_in_dir_paths_help_text + default_string,
-)
+ help=plug_in_dir_paths_help_text + default_string)
parser.add_argument(
- "--mch_class", default="obmc", help=mch_class_help_text + default_string
-)
+ '--mch_class',
+ default="obmc",
+ help=mch_class_help_text + default_string)
# The stock_list will be passed to gen_get_options. We populate it with the names of stock parm options we
# want. These stock parms are pre-defined by gen_get_options.
stock_list = [("test_mode", 0), ("quiet", 1), ("debug", 0)]
-def exit_function(signal_number=0, frame=None):
+def exit_function(signal_number=0,
+ frame=None):
r"""
Execute whenever the program ends normally or with the signals that we catch (i.e. TERM, INT).
"""
@@ -114,9 +114,8 @@
global plug_in_dir_paths
global mch_class
- plug_in_packages_list = return_plug_in_packages_list(
- plug_in_dir_paths, mch_class
- )
+ plug_in_packages_list = return_plug_in_packages_list(plug_in_dir_paths,
+ mch_class)
qprint_var(plug_in_packages_list)
# As stated in the help text, this program must print the full paths of each selected plug in.
diff --git a/bin/websocket_monitor.py b/bin/websocket_monitor.py
index 388cd3f..712b0ee 100755
--- a/bin/websocket_monitor.py
+++ b/bin/websocket_monitor.py
@@ -4,15 +4,15 @@
See help text for details.
"""
-import json
-import ssl
-import sys
-
-import requests
-import websocket
-from gen_arg import *
from gen_print import *
+from gen_arg import *
from gen_valid import *
+
+import json
+import sys
+import websocket
+import ssl
+import requests
from retrying import retry
save_path_0 = sys.path[0]
@@ -26,39 +26,37 @@
parser = argparse.ArgumentParser(
- usage="%(prog)s [OPTIONS]",
+ usage='%(prog)s [OPTIONS]',
description="%(prog)s will open a websocket session on a remote OpenBMC. "
- + "When an eSEL is created on that BMC, the monitor will receive "
- + "notice over websocket that the eSEL was created "
- + "and it will print a message.",
+ + "When an eSEL is created on that BMC, the monitor will receive "
+ + "notice over websocket that the eSEL was created "
+ + "and it will print a message.",
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- prefix_chars="-+",
-)
+ prefix_chars='-+')
parser.add_argument(
- "openbmc_host", default="", help="The BMC host name or IP address."
-)
+ 'openbmc_host',
+ default='',
+ help='The BMC host name or IP address.')
parser.add_argument(
- "--openbmc_username",
- default="root",
- help="The userid for the open BMC system.",
-)
+ '--openbmc_username',
+ default='root',
+ help='The userid for the open BMC system.')
parser.add_argument(
- "--openbmc_password",
- default="",
- help="The password for the open BMC system.",
-)
+ '--openbmc_password',
+ default='',
+ help='The password for the open BMC system.')
parser.add_argument(
- "--monitor_type",
- choices=["logging", "dump"],
- default="logging",
- help="The type of notifications from websocket to monitor.",
-)
+ '--monitor_type',
+ choices=['logging', 'dump'],
+ default='logging',
+ help='The type of notifications from websocket to monitor.')
stock_list = [("test_mode", 0), ("quiet", 0), ("debug", 0)]
-def exit_function(signal_number=0, frame=None):
+def exit_function(signal_number=0,
+ frame=None):
r"""
Execute whenever the program ends normally or with the signals that we
catch (i.e. TERM, INT).
@@ -69,7 +67,8 @@
qprint_pgm_footer()
-def signal_handler(signal_number, frame):
+def signal_handler(signal_number,
+ frame):
r"""
Handle signals. Without a function to catch a SIGTERM or SIGINT, the
program would terminate immediately with return code 143 and without
@@ -96,12 +95,14 @@
valid_value(openbmc_username)
valid_value(openbmc_password)
global monitoring_uri
- monitoring_uri = "/xyz/openbmc_project/" + monitor_type
+ monitoring_uri = '/xyz/openbmc_project/' + monitor_type
gen_post_validation(exit_function, signal_handler)
@retry(stop_max_attempt_number=3, wait_fixed=1000)
-def login(openbmc_host, openbmc_username, openbmc_password):
+def login(openbmc_host,
+ openbmc_username,
+ openbmc_password):
r"""
Log into the BMC and return the session object.
@@ -113,19 +114,15 @@
qprint_executing()
- http_header = {"Content-Type": "application/json"}
+ http_header = {'Content-Type': 'application/json'}
session = requests.session()
- response = session.post(
- "https://" + openbmc_host + "/login",
- headers=http_header,
- json={"data": [openbmc_username, openbmc_password]},
- verify=False,
- timeout=30,
- )
+ response = session.post('https://' + openbmc_host + '/login', headers=http_header,
+ json={"data": [openbmc_username, openbmc_password]},
+ verify=False, timeout=30)
valid_value(response.status_code, valid_values=[200])
login_response = json.loads(response.text)
qprint_var(login_response)
- valid_value(login_response["status"], valid_values=["ok"])
+ valid_value(login_response['status'], valid_values=['ok'])
return session
@@ -148,14 +145,12 @@
# or
# /xyz/openbmc_project/dump/entry/1","properties":{"Size":186180}}').
- if monitoring_uri + "/entry" in message:
- if "Id" in message:
- qprint_timen("eSEL received over websocket interface.")
+ if monitoring_uri + '/entry' in message:
+ if 'Id' in message:
+ qprint_timen('eSEL received over websocket interface.')
websocket_obj.close()
- elif "Size" in message:
- qprint_timen(
- "Dump notification received over websocket interface."
- )
+ elif 'Size' in message:
+ qprint_timen('Dump notification received over websocket interface.')
websocket_obj.close()
@@ -217,23 +212,17 @@
session = login(openbmc_host, openbmc_username, openbmc_password)
qprint_timen("Registering websocket handlers.")
cookies = session.cookies.get_dict()
- cookies = sprint_var(
- cookies,
- fmt=no_header() | strip_brackets(),
- col1_width=0,
- trailing_char="",
- delim="=",
- ).replace("\n", ";")
+ cookies = sprint_var(cookies, fmt=no_header() | strip_brackets(),
+ col1_width=0, trailing_char="",
+ delim="=").replace("\n", ";")
# Register the event handlers. When an ESEL is created by the system
# under test, the on_message() handler will be called.
- websocket_obj = websocket.WebSocketApp(
- "wss://" + openbmc_host + "/subscribe",
- on_message=on_message,
- on_error=on_error,
- on_close=on_close,
- on_open=on_open,
- cookie=cookies,
- )
+ websocket_obj = websocket.WebSocketApp("wss://" + openbmc_host + "/subscribe",
+ on_message=on_message,
+ on_error=on_error,
+ on_close=on_close,
+ on_open=on_open,
+ cookie=cookies)
qprint_timen("Completed registering of websocket handlers.")
websocket_obj.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})