def required_plug_in(required_plug_in_names, plug_in_dir_paths=None): r""" Determine whether the required_plug_in_names are in plug_in_dir_paths, construct an error_message and call gv.process_error_message(error_message). In addition, for each plug-in in required_plug_in_names, set the global plug-in variables. This is useful for callers who then want to validate certain values from other plug-ins. Example call: required_plug_in(required_plug_in_names) Description of argument(s): required_plug_in_names A list of plug_in names that the caller requires (e.g. ['OS_Console']). plug_in_dir_paths A string which is a colon-delimited list of plug-ins specified by the user (e.g. DB_Logging:FFDC:OS_Console:Perf). Path values (e.g. "/home/robot/dir1") will be stripped from this list to do the analysis. Default value is the AUTOGUI_PLUG_IN_DIR_PATHS or <PLUG_VAR_PREFIX>_PLUG_IN_DIR_PATHS environment variable. """ # Calculate default value for plug_in_dir_paths. plug_in_dir_paths = gm.dft( plug_in_dir_paths, os.environ.get( 'AUTOGUI_PLUG_IN_DIR_PATHS', os.environ.get(PLUG_VAR_PREFIX + "_PLUG_IN_DIR_PATHS", ""))) # Convert plug_in_dir_paths to a list of base names. plug_in_dir_paths = \ list(filter(None, map(os.path.basename, plug_in_dir_paths.split(":")))) error_message = gv.valid_list(plug_in_dir_paths, required_values=required_plug_in_names) if error_message: return gv.process_error_message(error_message) for plug_in_package_name in required_plug_in_names: get_plug_vars(general=False, plug_in_package_name=plug_in_package_name)
def gen_get_options(parser, stock_list=[]): r""" Parse the command line arguments using the parser object passed and return True/False (i.e. pass/fail). However, if gv.exit_on_error is set, simply exit the program on failure. Also set the following built in values: __builtin__.quiet This value is used by the qprint functions. __builtin__.test_mode This value is used by command processing functions. __builtin__.debug This value is used by the dprint functions. __builtin__.arg_obj This value is used by print_program_header, etc. __builtin__.parser This value is used by print_program_header, etc. Description of arguments: parser A parser object. See argparse module documentation for details. stock_list The caller can use this parameter to request certain stock parameters offered by this function. For example, this function will define a "quiet" option upon request. This includes stop help text and parm checking. The stock_list is a list of tuples each of which consists of an arg_name and a default value. Example: stock_list = [("test_mode", 0), ("quiet", 1), ("debug", 0)] """ # This is a list of stock parms that we support. master_stock_list = ["quiet", "test_mode", "debug", "loglevel"] # Process stock_list. for ix in range(0, len(stock_list)): if len(stock_list[ix]) < 1: error_message = "Programmer error - stock_list[" + str(ix) +\ "] is supposed to be a tuple containing at" +\ " least one element which is the name of" +\ " the desired stock parameter:\n" +\ gp.sprint_var(stock_list) return gv.process_error_message(error_message) if isinstance(stock_list[ix], tuple): arg_name = stock_list[ix][0] default = stock_list[ix][1] else: arg_name = stock_list[ix] default = None if arg_name not in master_stock_list: error_message = "Programmer error - arg_name \"" + arg_name +\ "\" not found found in stock list:\n" +\ gp.sprint_var(master_stock_list) return gv.process_error_message(error_message) if arg_name == "quiet": if default is None: default = 0 parser.add_argument( '--quiet', default=default, type=int, choices=[1, 0], help='If this parameter is set to "1", %(prog)s' + ' will print only essential information, i.e. it will' + ' not echo parameters, echo commands, print the total' + ' run time, etc.' + default_string) elif arg_name == "test_mode": if default is None: default = 0 parser.add_argument( '--test_mode', default=default, type=int, choices=[1, 0], help='This means that %(prog)s should go through all the' + ' motions but not actually do anything substantial.' + ' This is mainly to be used by the developer of' + ' %(prog)s.' + default_string) elif arg_name == "debug": if default is None: default = 0 parser.add_argument( '--debug', default=default, type=int, choices=[1, 0], help='If this parameter is set to "1", %(prog)s will print' + ' additional debug information. This is mainly to be' + ' used by the developer of %(prog)s.' + default_string) elif arg_name == "loglevel": if default is None: default = "info" parser.add_argument( '--loglevel', default=default, type=str, choices=[ 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL', 'debug', 'info', 'warning', 'error', 'critical' ], help='If this parameter is set to "1", %(prog)s will print' + ' additional debug information. This is mainly to be' + ' used by the developer of %(prog)s.' + default_string) arg_obj = parser.parse_args() __builtin__.quiet = 0 __builtin__.test_mode = 0 __builtin__.debug = 0 __builtin__.loglevel = 'WARNING' for ix in range(0, len(stock_list)): if isinstance(stock_list[ix], tuple): arg_name = stock_list[ix][0] default = stock_list[ix][1] else: arg_name = stock_list[ix] default = None if arg_name == "quiet": __builtin__.quiet = arg_obj.quiet elif arg_name == "test_mode": __builtin__.test_mode = arg_obj.test_mode elif arg_name == "debug": __builtin__.debug = arg_obj.debug elif arg_name == "loglevel": __builtin__.loglevel = arg_obj.loglevel __builtin__.arg_obj = arg_obj __builtin__.parser = parser # For each command line parameter, create a corresponding global variable and assign it the appropriate # value. For example, if the command line contained "--last_name='Smith', we'll create a global variable # named "last_name" with the value "Smith". module = sys.modules['__main__'] for key in arg_obj.__dict__: setattr(module, key, getattr(__builtin__.arg_obj, key)) return True
def gen_get_options(parser, stock_list=[]): r""" Parse the command line arguments using the parser object passed and return True/False (i.e. pass/fail). However, if gv.exit_on_error is set, simply exit the program on failure. Also set the following built in values: __builtin__.quiet This value is used by the qprint functions. __builtin__.test_mode This value is used by command processing functions. __builtin__.debug This value is used by the dprint functions. __builtin__.arg_obj This value is used by print_program_header, etc. __builtin__.parser This value is used by print_program_header, etc. Description of arguments: parser A parser object. See argparse module documentation for details. stock_list The caller can use this parameter to request certain stock parameters offered by this function. For example, this function will define a "quiet" option upon request. This includes stop help text and parm checking. The stock_list is a list of tuples each of which consists of an arg_name and a default value. Example: stock_list = [("test_mode", 0), ("quiet", 1), ("debug", 0)] """ # This is a list of stock parms that we support. master_stock_list = ["quiet", "test_mode", "debug", "loglevel"] # Process stock_list. for ix in range(0, len(stock_list)): if len(stock_list[ix]) < 1: error_message = "Programmer error - stock_list[" + str(ix) +\ "] is supposed to be a tuple containing at" +\ " least one element which is the name of" +\ " the desired stock parameter:\n" +\ gp.sprint_var(stock_list) return gv.process_error_message(error_message) if isinstance(stock_list[ix], tuple): arg_name = stock_list[ix][0] default = stock_list[ix][1] else: arg_name = stock_list[ix] default = None if arg_name not in master_stock_list: error_message = "Programmer error - arg_name \"" + arg_name +\ "\" not found found in stock list:\n" +\ gp.sprint_var(master_stock_list) return gv.process_error_message(error_message) if arg_name == "quiet": if default is None: default = 0 parser.add_argument( '--quiet', default=default, type=int, choices=[1, 0], help='If this parameter is set to "1", %(prog)s' + ' will print only essential information, i.e. it will' + ' not echo parameters, echo commands, print the total' + ' run time, etc.' + default_string) elif arg_name == "test_mode": if default is None: default = 0 parser.add_argument( '--test_mode', default=default, type=int, choices=[1, 0], help='This means that %(prog)s should go through all the' + ' motions but not actually do anything substantial.' + ' This is mainly to be used by the developer of' + ' %(prog)s.' + default_string) elif arg_name == "debug": if default is None: default = 0 parser.add_argument( '--debug', default=default, type=int, choices=[1, 0], help='If this parameter is set to "1", %(prog)s will print' + ' additional debug information. This is mainly to be' + ' used by the developer of %(prog)s.' + default_string) elif arg_name == "loglevel": if default is None: default = "info" parser.add_argument( '--loglevel', default=default, type=str, choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL', 'debug', 'info', 'warning', 'error', 'critical'], help='If this parameter is set to "1", %(prog)s will print' + ' additional debug information. This is mainly to be' + ' used by the developer of %(prog)s.' + default_string) arg_obj = parser.parse_args() __builtin__.quiet = 0 __builtin__.test_mode = 0 __builtin__.debug = 0 __builtin__.loglevel = 'WARNING' for ix in range(0, len(stock_list)): if isinstance(stock_list[ix], tuple): arg_name = stock_list[ix][0] default = stock_list[ix][1] else: arg_name = stock_list[ix] default = None if arg_name == "quiet": __builtin__.quiet = arg_obj.quiet elif arg_name == "test_mode": __builtin__.test_mode = arg_obj.test_mode elif arg_name == "debug": __builtin__.debug = arg_obj.debug elif arg_name == "loglevel": __builtin__.loglevel = arg_obj.loglevel __builtin__.arg_obj = arg_obj __builtin__.parser = parser # For each command line parameter, create a corresponding global variable # and assign it the appropriate value. For example, if the command line # contained "--last_name='Smith', we'll create a global variable named # "last_name" with the value "Smith". module = sys.modules['__main__'] for key in arg_obj.__dict__: setattr(module, key, getattr(__builtin__.arg_obj, key)) return True