ffdc: Simplify error messages

Tested: Error scenarios
- Missing CLI and env parm cases
- Missing combinations of CLI and env parm cases

Signed-off-by: Peter D  Phan <peterp@us.ibm.com>
Change-Id: I22be1fa0a8c947320c5a1bd4cda672290cfcfcf2
Signed-off-by: Peter D  Phan <peterp@us.ibm.com>
diff --git a/ffdc/collect_ffdc.py b/ffdc/collect_ffdc.py
index 775cd58..10f0b1c 100644
--- a/ffdc/collect_ffdc.py
+++ b/ffdc/collect_ffdc.py
@@ -1,7 +1,6 @@
 #!/usr/bin/env python
 
 r"""
-
 CLI FFDC Collector.
 """
 
@@ -11,7 +10,8 @@
 
 # ---------Set sys.path for cli command execution---------------------------------------
 # Absolute path to openbmc-test-automation/ffdc
-full_path = os.path.abspath(os.path.dirname(sys.argv[0])).split('ffdc')[0]
+abs_path = os.path.abspath(os.path.dirname(sys.argv[0]))
+full_path = abs_path.split('ffdc')[0]
 sys.path.append(full_path)
 # Walk path and append to sys.path
 for root, dirs, files in os.walk(full_path):
@@ -21,44 +21,65 @@
 from ffdc_collector import FFDCCollector
 
 
-@click.command()
-@click.option('-h', '--hostname', envvar='OPENBMC_HOST',
-              help="ip or hostname of the target [default: OPENBMC_HOST]")
+@click.command(context_settings=dict(help_option_names=['-h', '--help']))
+@click.option('-r', '--remote', envvar='OPENBMC_HOST',
+              help="Name/IP of the remote (targeting) host. [default: OPENBMC_HOST]")
 @click.option('-u', '--username', envvar='OPENBMC_USERNAME',
-              help="username on targeted system [default:  OPENBMC_USERNAME]")
+              help="User on the remote host with access to FFDC files.[default: OPENBMC_USERNAME]")
 @click.option('-p', '--password', envvar='OPENBMC_PASSWORD',
-              help="password for username on targeted system [default: OPENBMC_PASSWORD]")
-@click.option('-f', '--ffdc_config', default="ffdc_config.yaml",
-              show_default=True, help="YAML FFDC configuration file")
+              help="Password for user on remote host. [default: OPENBMC_PASSWORD]")
+@click.option('-f', '--ffdc_config', default=abs_path + "/ffdc_config.yaml",
+              show_default=True, help="YAML Configuration file listing commands and files for FFDC.")
 @click.option('-l', '--location', default="/tmp",
               show_default=True, help="Location to store collected FFDC data")
-def cli_ffdc(hostname, username, password, ffdc_config, location):
+def cli_ffdc(remote, username, password, ffdc_config, location):
     r"""
     Stand alone CLI to generate and collect FFDC from the selected target.
-
-        Description of argument(s):
-
-        hostname                Name/IP of the remote (targeting) host.
-        username                User on the remote host with access to FFDC files.
-        password                Password for user on remote host.
-        ffdc_config             Configuration file listing commands and files for FFDC.
-        location                Where to store collected FFDC.
-
     """
+
     click.echo("\n********** FFDC Starts **********")
 
-    thisFFDC = FFDCCollector(hostname, username, password, ffdc_config, location)
-    thisFFDC.collect_ffdc()
+    if input_options_ok(remote, username, password, ffdc_config):
+        thisFFDC = FFDCCollector(remote, username, password, ffdc_config, location)
+        thisFFDC.collect_ffdc()
 
-    if not thisFFDC.receive_file_list:
-        click.echo("\n\tFFDC Collection from " + hostname + " has failed\n\n.")
-    else:
-        click.echo(str("\t" + str(len(thisFFDC.receive_file_list)))
-                   + " files were retrieved from " + hostname)
-        click.echo("\tFiles are stored in " + thisFFDC.ffdc_dir_path + "\n\n")
+        if not thisFFDC.receive_file_list:
+            click.echo("\n\tFFDC Collection from " + remote + " has failed\n\n.")
+        else:
+            click.echo(str("\t" + str(len(thisFFDC.receive_file_list)))
+                       + " files were retrieved from " + remote)
+            click.echo("\tFiles are stored in " + thisFFDC.ffdc_dir_path + "\n\n")
 
     click.echo("\n********** FFDC Finishes **********\n\n")
 
 
+def input_options_ok(remote, username, password, ffdc_config):
+    r"""
+    Verify script options exist via CLI options or environment variables.
+    """
+
+    all_options_ok = True
+
+    if not remote:
+        all_options_ok = False
+        print("\
+        \n>>>>>\tERROR: Name/IP of the remote host is not specified in CLI options or env OPENBMC_HOST.")
+    if not username:
+        all_options_ok = False
+        print("\
+        \n>>>>>\tERROR: User on the remote host is not specified in CLI options or env OPENBMC_USERNAME.")
+    if not password:
+        all_options_ok = False
+        print("\
+        \n>>>>>\tERROR: Password for user on remote host is not specified in CLI options "
+              + "or env OPENBMC_PASSWORD.")
+    if not os.path.isfile(ffdc_config):
+        all_options_ok = False
+        print("\
+        \n>>>>>\tERROR: Config file %s is not found.  Please verify path and filename." % ffdc_config)
+
+    return all_options_ok
+
+
 if __name__ == '__main__':
     cli_ffdc()