def run_svc(service_url, module, command, param_file, token=None, level=logging.INFO, logger=None): """ Narrative Job Service Genome util service wrapper. Args: ws_url: A url for the KBase workspace service. param_file: A file name for the input parameters. output_filename: A file name where the output JSON string should be stored. level: Logging level, defaults to logging.INFO. """ if logger is None: logger = script_util.stderrlogger(__file__) if service_url != "impl": logger.error("Only 'impl' is accepted as svc_url") raise # TODO: #TODO: Dynamically load required module, for now direct import config = get_config(module = module, cfg_path = None) if config is None: logger.error("Could not find deployment.cfg to configure the service\n\tPlease ensure {0},{1},or{2} to be defined".format(DEPLOY, DEPLOYMENT, TOP)) raise gu_hndlr = KBaseGenomeUtil(config) with open(param_file) as paramh: param = json.load(paramh) if token is None: token = environ.get('KB_AUTH_TOKEN', None) if token is None: logger.error("Could not retrieve user token from KB_AUTH_TOKEN") #TODO: May add full call ctx try: logger.info("Execute {0}.{1} with {2}".format(module,command, pprint.pformat(param))) output = getattr(gu_hndlr,command)({'token' : token },param) logger.info("Output: {0}".format(pprint.pformat(output))) except: logger.exception("".join(traceback.format_exc())) sys.exit(1) return output
# called only if script is run from command line if __name__ == "__main__": import sys parser = argparse.ArgumentParser(prog='njs-run-genome-util.py', description='NJS Service Wrapper Script', epilog='Authors: Shinjae Yoo') parser.add_argument('-s', '--service_url', help='Service url', action='store', type=str, default='impl', nargs='?', required=False) parser.add_argument('-w', '--ws_url', help='Workspace url', action='store', type=str, default='https://kbase.us/services/ws/', nargs='?', required=False) parser.add_argument('-m', '--module', help='Module name', action='store', type=str, default='KBaseGenomeUtil', nargs='?', required=False) parser.add_argument('-c','--command', help ='Command name', action='store', type=str, nargs='?', required=True) parser.add_argument('-p','--param_file', help ='Input parameter file name', action='store', type=str, nargs='?', required=True) parser.add_argument('-t','--token', help ='token', action='store', type=str, nargs='?', default=None, required=False) args = parser.parse_args() logger = script_util.stderrlogger(__file__) try: ret_json = run_svc(args.service_url, args.module, args.command, args.param_file, logger=logger) #logger.info("Writing out JSON.") #with open(args.output_filename, "w") as outFile: # outFile.write(json.dumps(ret_json,sort_keys = True, indent = 4)) logger.info("Execution completed.") except: logger.exception("".join(traceback.format_exc())) sys.exit(1) sys.exit(0)