1#!/usr/bin/env python 2 3r""" 4 5CLI FFDC Collector. 6""" 7 8import os 9import sys 10import click 11 12# ---------Set sys.path for cli command execution--------------------------------------- 13# Absolute path to openbmc-test-automation/ffdc 14full_path = os.path.abspath(os.path.dirname(sys.argv[0])).split('ffdc')[0] 15sys.path.append(full_path) 16# Walk path and append to sys.path 17for root, dirs, files in os.walk(full_path): 18 for found_dir in dirs: 19 sys.path.append(os.path.join(root, found_dir)) 20 21from ffdc_collector import FFDCCollector 22 23 24@click.command() 25@click.option('-h', '--hostname', envvar='OPENBMC_HOST', 26 help="ip or hostname of the target [default: OPENBMC_HOST]") 27@click.option('-u', '--username', envvar='OPENBMC_USERNAME', 28 help="username on targeted system [default: OPENBMC_USERNAME]") 29@click.option('-p', '--password', envvar='OPENBMC_PASSWORD', 30 help="password for username on targeted system [default: OPENBMC_PASSWORD]") 31@click.option('-f', '--ffdc_config', default="ffdc_config.yaml", 32 show_default=True, help="YAML FFDC configuration file") 33@click.option('-l', '--location', default="/tmp", 34 show_default=True, help="Location to store collected FFDC data") 35def cli_ffdc(hostname, username, password, ffdc_config, location): 36 r""" 37 Stand alone CLI to generate and collect FFDC from the selected target. 38 39 Description of argument(s): 40 41 hostname Name/IP of the remote (targetting) host. 42 username User on the remote host with access to FFDC files. 43 password Password for user on remote host. 44 ffdc_config Configuration file listing commands and files for FFDC. 45 location Where to store collected FFDC. 46 47 """ 48 click.echo("\n********** FFDC Starts **********") 49 50 thisFFDC = FFDCCollector(hostname, username, password, ffdc_config, location) 51 thisFFDC.collect_ffdc() 52 53 if not thisFFDC.receive_file_list: 54 click.echo("\n\tFFDC Collection from " + hostname + " has failed\n\n.") 55 else: 56 click.echo(str("\t" + str(len(thisFFDC.receive_file_list))) 57 + " files were retrieved from " + hostname) 58 click.echo("\tFiles are stored in " + thisFFDC.ffdc_dir_path + "\n\n") 59 60 click.echo("\n********** FFDC Finishes **********\n\n") 61 62 63if __name__ == '__main__': 64 cli_ffdc() 65