#! /usr/bin/env python import logging, os, sys, produtil.log, produtil.setup from produtil.log import jlogger def fail(msg): jlogger.error(msg) sys.exit(2) def main(): jlogger.info('HWRF Final Merge is starting.') import hwrf_expt hwrf_expt.init_module() conf=hwrf_expt.conf logger=hwrf_expt.conf.log('exhwrf_final_merge') # Some Basic Checks before we run final merge .... run_multistorm=conf.getbool('config','run_multistorm',False) fakestormid=conf.getstr('config','fakestormid','nofakeid') stormid=conf.getstr('config','STID','nostid') multistorm_sids=conf.getstr('config','multistorm_sids','nosids') if not run_multistorm: fail("CAN NOT Run Final Merge. Set 'run_multistorm=yes' in" + \ " hwrf_basic.conf and then run launcher task.") elif stormid=='nostid': logger.error("ERROR: Final Merge no 'STID' defined.") sys.exit(1) elif fakestormid=='nofakeid': logger.error("ERROR: Final Merge no 'fakestormid' defined in conf file.") sys.exit(1) # Plans are to run multistorm with 0 or 1 storms ... # in the future. So pull this check when appropriate. elif multistorm_sids=='nosids': logger.error("ERROR: Final Merge no 'multistorm_sids' defined in conf file.") sys.exit(1) elif not fakestormid.upper() == stormid.upper(): logger.error("ERROR: Final merge can only run on " "your defined 'fakestormid': %s. This is " "'STID' %s"%(fakestormid, stormid)) sys.exit(1) else: jlogger.info('Basic Final Merge Checks passed. Proceed with Running Final Merge.') hwrf_expt.finalmerge.run() jlogger.info('Final Merge has completed.') if __name__=='__main__': try: produtil.setup.setup() main() except Exception as e: jlogger.critical('HWRF final merge is aborting: '+str(e),exc_info=True) sys.exit(2)