def read_boot_lists(dir_path="data/boot_lists/"): r""" Read the contents of all the boot lists files found in the given boot lists directory and return dictionary of the lists. Boot lists are simply files containing a boot test name on each line. These files are useful for categorizing and organizing boot tests. For example, there may be a "Power_on" list, a "Power_off" list, etc. The names of the boot list files will be the keys to the top level dictionary. Each dictionary entry is a list of all the boot tests found in the corresponding file. Here is an abbreviated look at the resulting boot_lists dictionary. boot_lists: boot_lists[All]: boot_lists[All][0]: REST Power On boot_lists[All][1]: REST Power Off ... boot_lists[Code_update]: boot_lists[Code_update][0]: BMC oob hpm boot_lists[Code_update][1]: BMC ib hpm ... Description of argument(s): dir_path The path to the directory containing the boot list files. If this value is a relative path, this function will use the code_base_dir_path as the base directory (see definition above). """ if not dir_path.startswith("/"): # Dir path is relative. dir_path = code_base_dir_path + dir_path # Get a list of all file names in the directory. boot_file_names = os.listdir(dir_path) boot_lists = DotDict() for boot_category in boot_file_names: file_path = gm.which(dir_path + boot_category) boot_list = gm.file_to_list(file_path, newlines=0, comments=0, trim=1) boot_lists[boot_category] = boot_list return boot_lists
def read_boot_lists(dir_path="data/boot_lists/"): r""" Read the contents of all the boot lists files found in the given boot lists directory and return dictionary of the lists. Boot lists are simply files containing a boot test name on each line. These files are useful for categorizing and organizing boot tests. For example, there may be a "Power_on" list, a "Power_off" list, etc. The names of the boot list files will be the keys to the top level dictionary. Each dictionary entry is a list of all the boot tests found in the corresponding file. Here is an abbreviated look at the resulting boot_lists dictionary. boot_lists: boot_lists[All]: boot_lists[All][0]: BMC Power On boot_lists[All][1]: BMC Power Off ... boot_lists[Code_update]: boot_lists[Code_update][0]: BMC oob hpm boot_lists[Code_update][1]: BMC ib hpm ... Description of arguments: dir_path The path to the directory containing the boot list files. If this value is a relative path, this function will use the code_base_dir_path as the base directory (see definition above). """ if not dir_path.startswith("/"): # Dir path is relative. dir_path = code_base_dir_path + dir_path # Get a list of all file names in the directory. boot_file_names = os.listdir(dir_path) boot_lists = DotDict() for boot_category in boot_file_names: file_path = gm.which(dir_path + boot_category) boot_list = gm.file_to_list(file_path, newlines=0, comments=0, trim=1) boot_lists[boot_category] = boot_list return boot_lists
def robot_cmd_fnc(robot_cmd_buf, robot_jail=os.environ.get('ROBOT_JAIL', '')): r""" Run the robot command string. This function will set the various PATH variables correctly so that you are running the proper version of all imported files, etc. Description of argument(s): robot_cmd_buf The complete robot command string. robot_jail Indicates that this is to run in "robot jail" meaning without visibility to any apolloxxx import files, programs, etc. """ if not gv.valid_value(robot_cmd_buf): return False # Set global variables to aid in cleanup with process_robot_output_files. global gcr_last_robot_cmd_buf global gcr_last_robot_rc gcr_last_robot_cmd_buf = robot_cmd_buf # Get globals set by init_robot_test_base_dir_path(). module = sys.modules["__main__"] try: ROBOT_TEST_BASE_DIR_PATH = getattr(module, "ROBOT_TEST_BASE_DIR_PATH") except NameError: init_robot_test_base_dir_path() ROBOT_TEST_BASE_DIR_PATH = getattr(module, "ROBOT_TEST_BASE_DIR_PATH") ROBOT_TEST_RUNNING_FROM_SB = \ gm.get_mod_global("ROBOT_TEST_RUNNING_FROM_SB") if robot_jail == "": if ROBOT_TEST_RUNNING_FROM_SB: robot_jail = 0 else: robot_jail = 1 robot_jail = int(robot_jail) ROBOT_JAIL = os.environ.get('ROBOT_JAIL', '') gp.dprint_vars(ROBOT_TEST_BASE_DIR_PATH, ROBOT_TEST_RUNNING_FROM_SB, ROBOT_JAIL, robot_jail) # Save PATH and PYTHONPATH to be restored later. os.environ["SAVED_PYTHONPATH"] = os.environ.get("PYTHONPATH", "") os.environ["SAVED_PATH"] = os.environ.get("PATH", "") if robot_jail: PYTHONPATH = ROBOT_TEST_BASE_DIR_PATH + "lib" NEW_PATH_LIST = [ROBOT_TEST_BASE_DIR_PATH + "bin"] # Coding special case to preserve python27_path. python27_path = "/opt/rh/python27/root/usr/bin" PATH_LIST = os.environ.get("PATH", "").split(":") if python27_path in PATH_LIST: NEW_PATH_LIST.append(python27_path) # Make sure robot can be found in robot jail. robot_dir_path = os.path.dirname(gm.which('robot')) if robot_dir_path in PATH_LIST: NEW_PATH_LIST.append(robot_dir_path) NEW_PATH_LIST.extend([ "/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin" ]) PATH = ":".join(NEW_PATH_LIST) else: PYTHONPATH = os.environ.get('PYTHONPATH', '') + ":" +\ ROBOT_TEST_BASE_DIR_PATH + "lib/" PATH = os.environ.get('PATH', '') + ":" + ROBOT_TEST_BASE_DIR_PATH +\ "bin/" os.environ['PYTHONPATH'] = PYTHONPATH os.environ['PATH'] = PATH gp.dprint_vars(PATH, PYTHONPATH) os.environ['FFDC_DIR_PATH_STYLE'] = os.environ.get('FFDC_DIR_PATH_STYLE', '1') test_mode = getattr(module, "test_mode") gp.qpissuing(robot_cmd_buf, test_mode) if test_mode: os.environ["PATH"] = os.environ.get("SAVED_PATH", "") os.environ["PYTHONPATH"] = os.environ.get("SAVED_PYTHONPATH", "") return True if quiet: DEVNULL = open(os.devnull, 'wb') stdout = DEVNULL else: stdout = None sub_proc = subprocess.Popen(robot_cmd_buf, stdout=stdout, shell=True) sub_proc.communicate() shell_rc = sub_proc.returncode os.environ["PATH"] = os.environ.get("SAVED_PATH", "") os.environ["PYTHONPATH"] = os.environ.get("SAVED_PYTHONPATH", "") gcr_last_robot_rc = shell_rc process_robot_output_files() if shell_rc != 0: hex = 1 gp.print_var(shell_rc, hex) return False return True